Initial checks: - [x] Destination MAC = FF:FF:FF:FF:FF:FF - [ ] Destination IP = 255.255.255.255 - [x] UDP destination port = 67 - [x] OP == 1 - [x] If hops > 16: Discard packet - [ ] If option 82 is set, discard Modify packet: - [x] Increment "hops" field - [ ] If GIADDR == 0, set GIADDR = relay agent IP - [x] Add option 82 (use VLAN tags and interface name) - [x] Set source IP = relay agent IP - [x] Set destination IP = DHCP server IP - [x] Set destination MAC = relay agent MAC - [x] Re-calc IP checksum Final action: - [x] Return XDP_PASS (pass on to kernel)
Initial checks:
Modify packet:
Final action: