So it took me a while to update & re-write the dhcp relayd functionality that I made in python previously. This new C file can relay & rebroadcast both arp and dhcp packets via raw sockets. For DHCP relaying, it has to be able to insert the bridges IP address into the request so that the server replies back to us and then we can forward it on (so we can run only 1 dhcp server total on the network). The last interface specified in the list is designated as the dhcp server interface to send the requests coming in.
Also tried to reduce the number of system calls made by reading both the arp table proc file and routing table file instead (only 1 sys call to replace host route entries on the bridge router).
It’s been a while since I used select with multiple sockets but this compile uses less memory while running versus the python version, although the py version is easier to read and maintain (depends on your needs).
Source Code: https://github.com/stoops/arprb/blob/master/dhcprb.c?ts=4
I’ll run this for a while and see how it performs!
One thought on “Final version of relayd functionality written in C (arp & dhcp bridging)”
[…] DHCP/ARP Relay Bridge For OpenWRT […]