Populate the conf.L2Socket and conf.L3Socket according to the various use_* parameters
()
| 819 | |
| 820 | |
| 821 | def _set_conf_sockets(): |
| 822 | # type: () -> None |
| 823 | """Populate the conf.L2Socket and conf.L3Socket |
| 824 | according to the various use_* parameters |
| 825 | """ |
| 826 | if conf.use_bpf and not BSD: |
| 827 | Interceptor.set_from_hook(conf, "use_bpf", False) |
| 828 | raise ScapyInvalidPlatformException("BSD-like (OSX, *BSD...) only !") |
| 829 | if not conf.use_pcap and SOLARIS: |
| 830 | Interceptor.set_from_hook(conf, "use_pcap", True) |
| 831 | raise ScapyInvalidPlatformException( |
| 832 | "Scapy only supports libpcap on Solaris !" |
| 833 | ) |
| 834 | # we are already in an Interceptor hook, use Interceptor.set_from_hook |
| 835 | if conf.use_pcap: |
| 836 | try: |
| 837 | from scapy.arch.libpcap import L2pcapListenSocket, L2pcapSocket, \ |
| 838 | L3pcapSocket |
| 839 | except (OSError, ImportError): |
| 840 | log_loading.warning("No libpcap provider available ! pcap won't be used") |
| 841 | Interceptor.set_from_hook(conf, "use_pcap", False) |
| 842 | else: |
| 843 | conf.L3socket = L3pcapSocket |
| 844 | conf.L3socket6 = functools.partial( |
| 845 | L3pcapSocket, filter="ip6") |
| 846 | conf.L2socket = L2pcapSocket |
| 847 | conf.L2listen = L2pcapListenSocket |
| 848 | elif conf.use_bpf: |
| 849 | from scapy.arch.bpf.supersocket import L2bpfListenSocket, \ |
| 850 | L2bpfSocket, L3bpfSocket |
| 851 | conf.L3socket = L3bpfSocket |
| 852 | conf.L3socket6 = functools.partial( |
| 853 | L3bpfSocket, filter="ip6") |
| 854 | conf.L2socket = L2bpfSocket |
| 855 | conf.L2listen = L2bpfListenSocket |
| 856 | elif LINUX: |
| 857 | from scapy.arch.linux import L3PacketSocket, L2Socket, L2ListenSocket |
| 858 | conf.L3socket = L3PacketSocket |
| 859 | conf.L3socket6 = cast( |
| 860 | "Type[SuperSocket]", |
| 861 | functools.partial( |
| 862 | L3PacketSocket, |
| 863 | filter="ip6" |
| 864 | ) |
| 865 | ) |
| 866 | conf.L2socket = L2Socket |
| 867 | conf.L2listen = L2ListenSocket |
| 868 | elif WINDOWS: |
| 869 | from scapy.arch.windows import _NotAvailableSocket |
| 870 | from scapy.arch.windows.native import L3WinSocket, L3WinSocket6 |
| 871 | conf.L3socket = L3WinSocket |
| 872 | conf.L3socket6 = L3WinSocket6 |
| 873 | conf.L2socket = _NotAvailableSocket |
| 874 | conf.L2listen = _NotAvailableSocket |
| 875 | else: |
| 876 | from scapy.supersocket import L3RawSocket, L3RawSocket6 |
| 877 | conf.L3socket = L3RawSocket |
| 878 | conf.L3socket6 = L3RawSocket6 |
no test coverage detected