MCPcopy Index your code
hub / github.com/secdev/scapy / __init__

Method __init__

scapy/arch/linux/__init__.py:207–271  ·  view source on GitHub ↗
(self,
                 iface=None,  # type: Optional[Union[str, NetworkInterface]]
                 type=ETH_P_ALL,  # type: int
                 promisc=None,  # type: Optional[Any]
                 filter=None,  # type: Optional[Any]
                 nofilter=0,  # type: int
                 monitor=None,  # type: Optional[Any]
                 )

Source from the content-addressed store, hash-verified

205 desc = "read/write packets at layer 2 using Linux PF_PACKET sockets"
206
207 def __init__(self,
208 iface=None, # type: Optional[Union[str, NetworkInterface]]
209 type=ETH_P_ALL, # type: int
210 promisc=None, # type: Optional[Any]
211 filter=None, # type: Optional[Any]
212 nofilter=0, # type: int
213 monitor=None, # type: Optional[Any]
214 ):
215 # type: (...) -> None
216 self.iface = network_name(iface or conf.iface)
217 self.type = type
218 self.promisc = conf.sniff_promisc if promisc is None else promisc
219 self.ins = socket.socket(
220 socket.AF_PACKET, socket.SOCK_RAW, socket.htons(type))
221 self.ins.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 0)
222 if not nofilter:
223 if conf.except_filter:
224 if filter:
225 filter = "(%s) and not (%s)" % (filter, conf.except_filter)
226 else:
227 filter = "not (%s)" % conf.except_filter
228 if filter is not None:
229 try:
230 attach_filter(self.ins, filter, self.iface)
231 except (ImportError, Scapy_Exception) as ex:
232 raise Scapy_Exception("Cannot set filter: %s" % ex)
233 if self.promisc:
234 set_promisc(self.ins, self.iface)
235 self.ins.bind((self.iface, type))
236 _flush_fd(self.ins.fileno())
237 self.ins.setsockopt(
238 socket.SOL_SOCKET,
239 socket.SO_RCVBUF,
240 conf.bufsize
241 )
242 # Receive Auxiliary Data (VLAN tags)
243 try:
244 self.ins.setsockopt(SOL_PACKET, PACKET_AUXDATA, 1)
245 self.ins.setsockopt(socket.SOL_SOCKET, SO_TIMESTAMPNS, 1)
246 self.auxdata_available = True
247 except OSError:
248 # Note: Auxiliary Data is only supported since
249 # Linux 2.6.21
250 msg = "Your Linux Kernel does not support Auxiliary Data!"
251 log_runtime.info(msg)
252 if not isinstance(self, L2ListenSocket):
253 self.outs = self.ins # type: socket.socket
254 self.outs.setsockopt(
255 socket.SOL_SOCKET,
256 socket.SO_SNDBUF,
257 conf.bufsize
258 )
259 else:
260 self.outs = None # type: ignore
261 sa_ll = self.ins.getsockname()
262 if sa_ll[3] in conf.l2types:
263 self.LL = conf.l2types.num2layer[sa_ll[3]]
264 self.lvl = 2

Callers 1

__init__Method · 0.45

Calls 8

network_nameFunction · 0.90
Scapy_ExceptionClass · 0.90
warningFunction · 0.90
set_promiscFunction · 0.85
_flush_fdFunction · 0.85
attach_filterFunction · 0.70
bindMethod · 0.45
filenoMethod · 0.45

Tested by

no test coverage detected