Skip to content
Snippets Groups Projects
Commit 15ae22b2 authored by Pierre LALET's avatar Pierre LALET
Browse files

Linux: L2Socket can set promiscuous mode (fixes #17)

parent 99669ea2
No related branches found
No related tags found
No related merge requests found
...@@ -408,7 +408,7 @@ class L3PacketSocket(SuperSocket): ...@@ -408,7 +408,7 @@ class L3PacketSocket(SuperSocket):
class L2Socket(SuperSocket): class L2Socket(SuperSocket):
desc = "read/write packets at layer 2 using Linux PF_PACKET sockets" desc = "read/write packets at layer 2 using Linux PF_PACKET sockets"
def __init__(self, iface = None, type = ETH_P_ALL, filter=None, nofilter=0): def __init__(self, iface=None, type=ETH_P_ALL, promisc=None, filter=None, nofilter=0):
if iface is None: if iface is None:
iface = conf.iface iface = conf.iface
self.ins = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(type)) self.ins = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(type))
...@@ -421,6 +421,11 @@ class L2Socket(SuperSocket): ...@@ -421,6 +421,11 @@ class L2Socket(SuperSocket):
filter = "not (%s)" % conf.except_filter filter = "not (%s)" % conf.except_filter
if filter is not None: if filter is not None:
attach_filter(self.ins, filter) attach_filter(self.ins, filter)
if promisc is None:
promisc = conf.sniff_promisc
self.promisc = promisc
if self.promisc:
set_promisc(self.ins, iface)
self.ins.bind((iface, type)) self.ins.bind((iface, type))
_flush_fd(self.ins) _flush_fd(self.ins)
self.ins.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 2**30) self.ins.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 2**30)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment