def __init__(self, raw=None, prev=None, **kw): packet_base.__init__(self) self.prev = prev self.op = 0 self.htype = 0 self.hlen = 0 self.hops = 0 self.xid = 0 self.secs = 0 self.flags = 0 self.ciaddr = IP_ANY self.yiaddr = IP_ANY self.siaddr = IP_ANY self.giaddr = IP_ANY self.chaddr = None self.sname = b'' self.file = b'' self.magic = self.MAGIC self._raw_options = b'' if raw is not None: self.parse(raw) else: self.options = util.DirtyDict() self._init(kw)
def parseOptions(self): self.options = util.DirtyDict() self.parseOptionSegment(self._raw_options) if dhcp.OVERLOAD_OPT in self.options: opt_val = self.options[dhcp.OVERLOAD_OPT] if len(opt_val) != 1: self.warn('DHCP overload option has bad len %u' % (len(opt_val), )) return if opt_val == 1 or opt_val == 3: self.parseOptionSegment(self.file) if opt_val == 2 or opt_val == 3: self.parseOptionSegment(self.sname)