Revision e52de724
b/nfdhcpd/nfdhcpd | ||
---|---|---|
616 | 616 |
""" |
617 | 617 |
ns = IPv6(payload.get_data()) |
618 | 618 |
|
619 |
binding = None |
|
620 |
for b in self.clients.values(): |
|
621 |
if b.eui64 == ns.tgt: |
|
622 |
binding = b |
|
623 |
break |
|
619 |
logging.debug("lladdr %s src %sns.lladdr" , ns.lladdr, ns.src) |
|
624 | 620 |
|
625 |
if binding is None: |
|
626 |
logging.debug("Ignoring neighbour solicitation on" |
|
627 |
" for eui64 %s", ns.tgt) |
|
628 |
# We don't know what to do with this packet, so let the kernel |
|
629 |
# handle it |
|
630 |
payload.set_verdict(nfqueue.NF_ACCEPT) |
|
631 |
return |
|
621 |
try: |
|
622 |
binding = self.clients[ns.lladdr] |
|
623 |
except: |
|
624 |
logging.debug("Ignoring neighbour solicitation for eui64 %s", ns.tgt) |
|
625 |
# We don't know what to do with this packet, so let the kernel |
|
626 |
# handle it |
|
627 |
payload.set_verdict(nfqueue.NF_ACCEPT) |
|
628 |
return |
|
632 | 629 |
|
633 |
payload.set_verdict(nfqueue.NF_DROP) |
|
634 | 630 |
|
635 | 631 |
subnet = binding.net6 |
636 | 632 |
if subnet.net is None: |
637 | 633 |
logging.debug("No IPv6 network assigned for the interface") |
634 |
payload.set_verdict(nfqueue.NF_ACCEPT) |
|
638 | 635 |
return |
639 | 636 |
|
637 |
payload.set_verdict(nfqueue.NF_DROP) |
|
638 |
|
|
640 | 639 |
indevmac = self.get_iface_hw_addr(binding.indev) |
641 | 640 |
|
642 | 641 |
ifll = subnet.make_ll64(indevmac) |
Also available in: Unified diff