diff --git a/scapy/arch/linux.py b/scapy/arch/linux.py index 32f0a2d1a6a783af1090c491f7fcdc8f6b8ad6dc..40fcffd3660dc1793a75464dae23b014c03a25e8 100644 --- a/scapy/arch/linux.py +++ b/scapy/arch/linux.py @@ -314,7 +314,6 @@ class L3PacketSocket(SuperSocket): self.type = type self.ins = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(type)) self.ins.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 0) - _flush_fd(self.ins) if iface: self.ins.bind((iface, type)) if not nofilter: @@ -325,6 +324,7 @@ class L3PacketSocket(SuperSocket): filter = "not (%s)" % conf.except_filter if filter is not None: attach_filter(self.ins, filter) + _flush_fd(self.ins) self.ins.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 2**30) self.outs = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(type)) self.outs.setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, 2**30) @@ -413,7 +413,6 @@ class L2Socket(SuperSocket): iface = conf.iface self.ins = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(type)) self.ins.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 0) - _flush_fd(self.ins) if not nofilter: if conf.except_filter: if filter: @@ -423,6 +422,7 @@ class L2Socket(SuperSocket): if filter is not None: attach_filter(self.ins, filter) self.ins.bind((iface, type)) + _flush_fd(self.ins) self.ins.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 2**30) self.outs = self.ins self.outs.setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, 2**30) @@ -458,7 +458,6 @@ class L2ListenSocket(SuperSocket): self.outs = None self.ins = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(type)) self.ins.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 0) - _flush_fd(self.ins) if iface is not None: self.ins.bind((iface, type)) if not nofilter: @@ -482,6 +481,7 @@ class L2ListenSocket(SuperSocket): if self.promisc: for i in self.iff: set_promisc(self.ins, i) + _flush_fd(self.ins) self.ins.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 2**30) def close(self): if self.promisc: