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

Function ls

scapy/packet.py:2448–2511  ·  view source on GitHub ↗

List available layers, or infos on a given layer class or name. :param obj: Packet / packet name to use :param case_sensitive: if obj is a string, is it case sensitive? :param verbose:

(obj=None,  # type: Optional[Union[str, Packet, Type[Packet]]]
       case_sensitive=False,  # type: bool
       verbose=False  # type: bool
       )

Source from the content-addressed store, hash-verified

2446
2447@conf.commands.register
2448def ls(obj=None, # type: Optional[Union[str, Packet, Type[Packet]]]
2449 case_sensitive=False, # type: bool
2450 verbose=False # type: bool
2451 ):
2452 # type: (...) -> None
2453 """List available layers, or infos on a given layer class or name.
2454
2455 :param obj: Packet / packet name to use
2456 :param case_sensitive: if obj is a string, is it case sensitive?
2457 :param verbose:
2458 """
2459 if obj is None or isinstance(obj, str):
2460 tip = False
2461 if obj is None:
2462 tip = True
2463 all_layers = sorted(conf.layers, key=lambda x: x.__name__)
2464 else:
2465 pattern = re.compile(
2466 obj,
2467 0 if case_sensitive else re.I
2468 )
2469 # We first order by accuracy, then length
2470 if case_sensitive:
2471 sorter = lambda x: (x.__name__.index(obj), len(x.__name__))
2472 else:
2473 obj = obj.lower()
2474 sorter = lambda x: (x.__name__.lower().index(obj),
2475 len(x.__name__))
2476 all_layers = sorted((layer for layer in conf.layers
2477 if (isinstance(layer.__name__, str) and
2478 pattern.search(layer.__name__)) or
2479 (isinstance(layer.name, str) and
2480 pattern.search(layer.name))),
2481 key=sorter)
2482 for layer in all_layers:
2483 print("%-10s : %s" % (layer.__name__, layer._name))
2484 if tip and conf.interactive:
2485 print("\nTIP: You may use explore() to navigate through all "
2486 "layers using a clear GUI")
2487 else:
2488 try:
2489 fields = _pkt_ls(
2490 obj,
2491 verbose=verbose
2492 )
2493 is_pkt = isinstance(obj, Packet)
2494 # Print
2495 for fname, cls, clsne, dflt, long_attrs in fields:
2496 clsinfo = cls.__name__ + " " + clsne
2497 print("%-10s : %-35s =" % (fname, clsinfo), end=' ')
2498 if is_pkt:
2499 print("%-15r" % (getattr(obj, fname),), end=' ')
2500 print("(%r)" % (dflt,))
2501 for attr in long_attrs:
2502 print("%-15s%s" % ("", attr))
2503 # Restart for payload if any
2504 if is_pkt:
2505 obj = cast(Packet, obj)

Callers

nothing calls this directly

Calls 2

_pkt_lsFunction · 0.85
searchMethod · 0.45

Tested by

no test coverage detected