-
-
Notifications
You must be signed in to change notification settings - Fork 2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
do not fail on linux < 4.12 #4424
do not fail on linux < 4.12 #4424
Conversation
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #4424 +/- ##
==========================================
- Coverage 82.21% 80.39% -1.82%
==========================================
Files 352 353 +1
Lines 84032 87515 +3483
==========================================
+ Hits 69083 70359 +1276
- Misses 14949 17156 +2207
|
Could you share details about your setup? What OS / version are affected? |
d7cc6f0
to
b61cab1
Compare
My problem is that I'm stuck (at least for now) with a pretty old linux kernel (3.10.0-1160.45.1.el7.x86_64). So far, scapy worked perfectly fine there for my purposes (and does again with this fix). |
b61cab1
to
54df9f9
Compare
I did a little bit more research and found out that the minimum version for this to work is Linux 4.12. |
I was getting this error after secdev#4352 was merged on a linux system with a pretty old kernel (3.10.0-1160.45.1.el7.x86_64): ``` File "/usr/lib/python3.11/site-packages/scapy/layers/snmp.py", line 20, in <module> from scapy.layers.inet import UDP, IP, ICMP File "/usr/lib/python3.11/site-packages/scapy/layers/inet.py", line 20, in <module> from scapy.ansmachine import AnsweringMachine File "/usr/lib/python3.11/site-packages/scapy/ansmachine.py", line 20, in <module> from scapy.arch import get_if_addr File "/usr/lib/python3.11/site-packages/scapy/arch/__init__.py", line 189, in <module> _set_conf_sockets() # Apply config ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/scapy/config.py", line 826, in _set_conf_sockets conf.ifaces.reload() File "/usr/lib/python3.11/site-packages/scapy/interfaces.py", line 253, in reload self._reload_provs() File "/usr/lib/python3.11/site-packages/scapy/interfaces.py", line 249, in _reload_provs self._load(prov.reload(), prov) ^^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/scapy/interfaces.py", line 51, in reload return self.load() ^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/scapy/arch/linux/__init__.py", line 173, in load for iface in _get_if_list().values(): ^^^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/scapy/arch/linux/rtnetlink.py", line 790, in _get_if_list results = _sr1_rtrequest( ^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/scapy/arch/linux/rtnetlink.py", line 718, in _sr1_rtrequest sock.setsockopt(SOL_NETLINK, NETLINK_EXT_ACK, 1) OSError: [Errno 92] Protocol not available ```
54df9f9
to
ea01a92
Compare
That's interesting thanks. What if you just try: except: pass this request, does it work on your linux version? |
Yes, I've tried that as well, but then I get an exception at |
Alright, thanks for the pointers. I'll pop a VM with a Linux 3.0 kernel and investigate to see what we can do, and get back to you. I can't really merge this PR because it's just a workaround. Scapy should have a way of reading routes on old linux kernels, as it used to. If it happens that RTNETLINK really isn't supported, we'll add a fallback to some other method. |
I was getting this error after #4352 was merged: