This is probably a very simple thing. I'm new to python so don't crucify me.
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, IN.SO_BINDTODEVICE, "eth1"+'\0')
the above command gives me:
NameError: name 'IN' is not defined
the only import I have is
import socket
                If you don't understand the error message, it means you're referring a name IN which is not available at that point. Your code snippet is likely missing an import statement.
The socket module may not offer SO_BINDTODEVICE for portability reasons. If you are absolutely sure that you're running on Linux that supports it, try replacing it with it's numerical value, which is 25:
s.setsockopt(socket.SOL_SOCKET, 25, "eth1"+'\0')
Or for python 3:
s.setsockopt(socket.SOL_SOCKET, 25, str("eth1" + '\0').encode('utf-8'))
                        In Python, SO_BINDTODEVICE is present in IN module. Importing IN will solve the problem.
import socket
import IN
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.setsockopt(socket.SOL_SOCKET, IN.SO_BINDTODEVICE, "eth0")
                        You may even "export" a missing option:
if not hasattr(socket,'SO_BINDTODEVICE') :
    socket.SO_BINDTODEVICE = 25
then
sock.setsockopt(socket.SOL_SOCKET, socket.SO_BINDTODEVICE, interface+'\0')
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With