Skip to content
Snippets Groups Projects
  • Adi Shammout's avatar
    e4259bed
    busybox: udhcpc: no MSG_DONTROUTE when sending packet · e4259bed
    Adi Shammout authored
    This reverts a change made in Sep 2017 [1] which introduced
    MSG_DONTROUTE flag to prevent udhcpc from reaching out to servers on a
    different subnet. That change violates RFC2131 by forcing fully
    configured clients, who got their configurations through an offer
    relayed by a DHCP relay, from renewing through a unicast request
    directly to the DHCP server, resulting in the client resorting to
    boradcasting lease extension requests instead of unicasting them,
    further breaking RFC2131.
    
    The problem with MSG_DONTROUTE appears when talking to a properly
    configured DHCP server that rejects non-compliant requests. Such server
    will reject lease extension attempts sent via broadcast rather than
    unicast, as is the case with Finnish ISPs Telia and DNA as well as
    Estonian ISP Starman. Once the lease expires without renewal, udhcpc
    enters init mode, taking down the interfaces with it, and thus causing
    interruption on every lease expiry. On some ISPs (such as the ones
    mentioned above) that can be once every 10-20 minutes. The interruptions
    appear in the logs as such:
    ----
    udhcpc: sending renew to x.x.x.x
    udhcpc: send: Network unreachable
    udhcpc: sending renew to 0.0.0.0
    udhcpc: sending renew to 0.0.0.0
    ...
    udhcpc: lease lost, entering init state
    Interface 'wan' has lost the connection
    Interface 'wan' is now down
    Network alias 'eth0' link is down
    udhcpc: sending select for y.y.y.y
    udhcpc: lease of y.y.y.y obtained, lease time 1200
    Network alias 'eth0' link is up
    Interface 'wan' is now up
    ----
    
    During lease extension, a fully configured client should be able to
    reach out to the server from which it recieved the lease for extension,
    regardless in which network it is; that's up to the gateway to find. [2]
    This patch ensures that.
    
    [1]
    http://lists.busybox.net/pipermail/busybox-cvs/2017-September/037402.html
    [2]
    https://www.netmanias.com/en/post/techdocs/6000/dhcp-network-protocol/
    
    
    understanding-dhcp-relay-agents
    
    Signed-off-by: default avatarAdi Shammout <adi.shammout@outlook.com>
    Signed-off-by: Hans Dedecker <dedeckeh@gmail.com> [PKG_RELEASE increase]
    e4259bed
    History
    busybox: udhcpc: no MSG_DONTROUTE when sending packet
    Adi Shammout authored
    This reverts a change made in Sep 2017 [1] which introduced
    MSG_DONTROUTE flag to prevent udhcpc from reaching out to servers on a
    different subnet. That change violates RFC2131 by forcing fully
    configured clients, who got their configurations through an offer
    relayed by a DHCP relay, from renewing through a unicast request
    directly to the DHCP server, resulting in the client resorting to
    boradcasting lease extension requests instead of unicasting them,
    further breaking RFC2131.
    
    The problem with MSG_DONTROUTE appears when talking to a properly
    configured DHCP server that rejects non-compliant requests. Such server
    will reject lease extension attempts sent via broadcast rather than
    unicast, as is the case with Finnish ISPs Telia and DNA as well as
    Estonian ISP Starman. Once the lease expires without renewal, udhcpc
    enters init mode, taking down the interfaces with it, and thus causing
    interruption on every lease expiry. On some ISPs (such as the ones
    mentioned above) that can be once every 10-20 minutes. The interruptions
    appear in the logs as such:
    ----
    udhcpc: sending renew to x.x.x.x
    udhcpc: send: Network unreachable
    udhcpc: sending renew to 0.0.0.0
    udhcpc: sending renew to 0.0.0.0
    ...
    udhcpc: lease lost, entering init state
    Interface 'wan' has lost the connection
    Interface 'wan' is now down
    Network alias 'eth0' link is down
    udhcpc: sending select for y.y.y.y
    udhcpc: lease of y.y.y.y obtained, lease time 1200
    Network alias 'eth0' link is up
    Interface 'wan' is now up
    ----
    
    During lease extension, a fully configured client should be able to
    reach out to the server from which it recieved the lease for extension,
    regardless in which network it is; that's up to the gateway to find. [2]
    This patch ensures that.
    
    [1]
    http://lists.busybox.net/pipermail/busybox-cvs/2017-September/037402.html
    [2]
    https://www.netmanias.com/en/post/techdocs/6000/dhcp-network-protocol/
    
    
    understanding-dhcp-relay-agents
    
    Signed-off-by: default avatarAdi Shammout <adi.shammout@outlook.com>
    Signed-off-by: Hans Dedecker <dedeckeh@gmail.com> [PKG_RELEASE increase]