Alan, I read your DHCP File over and over, I am unclear which part should be glaringly obvious to me. Anyway, I have solved the issue. Now I can better follow the debug output - There isn't a DHCP-Relay attribute, rather a DHCP-Gateway address, which seems to *create* the DHCP-Relay attribute - so my condition was never going to work. It would seem the updated Relay-IP-Address needs to go in the 'reply' not the 'request'. I have now done this and it seems to be working. if (&DHCP-Gateway-IP-Address && "%{Packet-Src-IP-Address}" == "43.x.x.65") { update reply { &DHCP-Relay-IP-Address := "%{Packet-Src-IP-Address}" } } -Pools- (static) Yes, finding the documentation is easy when you understand the context of what you're being told. I'm sure I'll figure it out. Regards Martin. -----Original Message----- From: Freeradius-Users [mailto:freeradius-users-bounces+medge=emersion.com@lists.freeradius.org] On Behalf Of Alan DeKok Sent: Thursday, 24 November 2016 1:50 AM To: FreeRadius users mailing list <freeradius-users@lists.freeradius.org> Subject: Re: DHCP NAT (and Relay) and Static Addressing based on Option82/Circuit ID On Nov 22, 2016, at 7:47 PM, Martin Edge <medge@emersion.com> wrote
-DHCP Relay issue- Totally agree against modifying the source! It was a temporary path of desperation to fit inside restrictive timelines :)
The change you have suggested - where in the many configuration files would that go?
In raddb/sites-enabled/dhcp. Please *read* it. It helps.
I have attempted to put it in sites-enabled/dhcp and in mods-enabled/preprocess - which parses fine, but essentially seems to do nothing. I've removed the if condition in case something was going weird there.
Don't put run-time statements into module configurations. You can't just add random things to random files and expect it to work. The configuration is documented. There are hundreds of examples.
Best case scenario I would probably want to put something specific for this customer versus breaking the rules all the time, for instance
If (&DHCP-Relay-IP-Address && "%{Packet-Src-IP-Address}" == "x.x.x.x") { update request { DHCP-Relay-IP-Address := "%{Packet-Src-IP-Address}" } }
Yes, that works.
-DHCP Settings- OK. When you say 'sql' module, can I have you elaborate a little on that? As in modify the SQL module itself or is there something I should be able to do leveraging existing functionality?
Is there some documentation or reference that would be worth me reading to figure this out?
It's not that hard to find the documentation.
I see the definition of a table 'usergroup_table' for instance, but I'm unable to see how it all stitches together.
http://wiki.freeradius.org Type "sql" into the search bar. Read the documentation. It is *extensively* documented.
Also not sure if this suggests I might be taking the wrong path - presently the 'Pool' I'm using is actually not really a pool, it's a 1:1 between Circuit ID (Service) and the IP address.
Then it's static IP assignment, and not pools. Alan DeKok. - List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html