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

Method parse_options

scapy/layers/dhcp.py:613–667  ·  view source on GitHub ↗

:param pool: the range of addresses to distribute. Can be a Net, a list of IPs or a string (always gives the same IP). :param network: the subnet range :param gw: the gateway IP (can be None) :param nameserver: the DNS server IP (by default, same

(self,
                      pool: Union[Net, List[str]] = Net("192.168.1.128/25"),
                      network: str = "192.168.1.0/24",
                      gw: str = "192.168.1.1",
                      nameserver: Union[str, List[str]] = None,
                      domain: Optional[str] = None,
                      renewal_time: int = 60,
                      lease_time: int = 1800,
                      **kwargs)

Source from the content-addressed store, hash-verified

611 filter = "udp and port 68 and port 67"
612
613 def parse_options(self,
614 pool: Union[Net, List[str]] = Net("192.168.1.128/25"),
615 network: str = "192.168.1.0/24",
616 gw: str = "192.168.1.1",
617 nameserver: Union[str, List[str]] = None,
618 domain: Optional[str] = None,
619 renewal_time: int = 60,
620 lease_time: int = 1800,
621 **kwargs):
622 """
623 :param pool: the range of addresses to distribute. Can be a Net,
624 a list of IPs or a string (always gives the same IP).
625 :param network: the subnet range
626 :param gw: the gateway IP (can be None)
627 :param nameserver: the DNS server IP (by default, same than gw).
628 This can also be a list.
629 :param domain: the domain to advertise (can be None)
630
631 Other DHCP parameters can be passed as kwargs. See DHCPOptions in dhcp.py.
632 For instance::
633
634 dhcpd(pool=Net("10.0.10.0/24"), network="10.0.0.0/8", gw="10.0.10.1",
635 classless_static_routes=["1.2.3.4/32:9.8.7.6"])
636
637 Other example with different options::
638
639 dhcpd(pool=Net("10.0.10.0/24"), network="10.0.0.0/8", gw="10.0.10.1",
640 nameserver=["8.8.8.8", "4.4.4.4"], domain="DOMAIN.LOCAL")
641 """
642 self.domain = domain
643 netw, msk = (network.split("/") + ["32"])[:2]
644 msk = itom(int(msk))
645 self.netmask = ltoa(msk)
646 self.network = ltoa(atol(netw) & msk)
647 self.broadcast = ltoa(atol(self.network) | (0xffffffff & ~msk))
648 self.gw = gw
649 if nameserver is None:
650 self.nameserver = (gw,)
651 elif isinstance(nameserver, str):
652 self.nameserver = (nameserver,)
653 else:
654 self.nameserver = tuple(nameserver)
655
656 if isinstance(pool, str):
657 pool = Net(pool)
658 if isinstance(pool, Iterable):
659 pool = [k for k in pool if k not in [gw, self.network, self.broadcast]]
660 pool.reverse()
661 if len(pool) == 1:
662 pool, = pool
663 self.pool = pool
664 self.lease_time = lease_time
665 self.renewal_time = renewal_time
666 self.leases = {}
667 self.kwargs = kwargs
668
669 def is_request(self, req):
670 if not req.haslayer(BOOTP):

Callers

nothing calls this directly

Calls 4

NetClass · 0.90
itomFunction · 0.90
ltoaFunction · 0.90
atolFunction · 0.90

Tested by

no test coverage detected