The branch main has been updated by kbowling (ports committer):

URL: 
https://cgit.FreeBSD.org/src/commit/?id=0a539a0f005e8acbe4974ede30aa928099c988b9

commit 0a539a0f005e8acbe4974ede30aa928099c988b9
Author:     Fabian Kurtz <[email protected]>
AuthorDate: 2021-08-18 17:12:48 +0000
Commit:     Kevin Bowling <[email protected]>
CommitDate: 2021-08-18 17:15:28 +0000

    dhclient: support supersede statement for option 54
    
    PR:             217978
    Reported by:    Franco Fichtner <[email protected]>
    Reviewed by:    markj
    Obtained from:  OPNsense
    MFC after:      1 week
    Differential Revision:  https://reviews.freebsd.org/D31503
---
 sbin/dhclient/dhclient.c | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/sbin/dhclient/dhclient.c b/sbin/dhclient/dhclient.c
index 8c2615e4c3dc..a1628f0ee22f 100644
--- a/sbin/dhclient/dhclient.c
+++ b/sbin/dhclient/dhclient.c
@@ -931,6 +931,8 @@ void
 state_bound(void *ipp)
 {
        struct interface_info *ip = ipp;
+       u_int8_t *dp = NULL;
+       int len;
 
        ASSERT_STATE(state, S_BOUND);
 
@@ -938,10 +940,17 @@ state_bound(void *ipp)
        make_request(ip, ip->client->active);
        ip->client->xid = ip->client->packet.xid;
 
-       if (ip->client->active->options[DHO_DHCP_SERVER_IDENTIFIER].len == 4) {
-               memcpy(ip->client->destination.iabuf, ip->client->active->
-                   options[DHO_DHCP_SERVER_IDENTIFIER].data, 4);
-               ip->client->destination.len = 4;
+       if (ip->client->config->default_actions[DHO_DHCP_SERVER_IDENTIFIER] ==
+           ACTION_SUPERSEDE) {
+               dp = 
ip->client->config->defaults[DHO_DHCP_SERVER_IDENTIFIER].data;
+               len = 
ip->client->config->defaults[DHO_DHCP_SERVER_IDENTIFIER].len;
+       } else {
+               dp = 
ip->client->active->options[DHO_DHCP_SERVER_IDENTIFIER].data;
+               len = 
ip->client->active->options[DHO_DHCP_SERVER_IDENTIFIER].len;
+       }
+       if (len == 4) {
+               memcpy(ip->client->destination.iabuf, dp, len);
+               ip->client->destination.len = len;
        } else
                ip->client->destination = iaddr_broadcast;
 
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/dev-commits-src-main
To unsubscribe, send any mail to "[email protected]"

Reply via email to