Skip to content
Snippets Groups Projects
  • Paul Fertser's avatar
    174ff7d7
    base-files: send informational UDP message each second waiting · 174ff7d7
    Paul Fertser authored
    
    The preinit network initialisation and failsafe informational message
    are inherently racy as the interface takes some time to become
    functional after "ip link set $pi_ifname up" command.
    
    Consider this timing:
    
    [   12.002713] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready
    [   12.008819] IPv6: ADDRCONF(NETDEV_UP): eth1.1: link is not ready
    [   12.118877] random: procd: uninitialized urandom read (4 bytes read)
    [   13.068614] eth1: link up (1000Mbps/Full duplex)
    [   13.073309] IPv6: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
    [   13.080445] IPv6: ADDRCONF(NETDEV_CHANGE): eth1.1: link becomes ready
    
    Since the UDP message was sent prior to link becoming ready, it was
    never seen on the wire.
    
    The default failsafe timeout is set to 2 seconds, so with this patch
    there are two attempts to send the message, one spent in vain, and the
    other visible in tcpdump on an attached host. Of course, in cases when
    the interface is brought up faster it leads to two messages, however it
    should be harmless. This patch (almost) doesn't affect normal boot time
    while still allowing to enter failsafe reliably with a single button
    press, matching the official "generic failsafe" documentation.
    
    Signed-off-by: default avatarPaul Fertser <fercerpav@gmail.com>
    174ff7d7
    History
    base-files: send informational UDP message each second waiting
    Paul Fertser authored
    
    The preinit network initialisation and failsafe informational message
    are inherently racy as the interface takes some time to become
    functional after "ip link set $pi_ifname up" command.
    
    Consider this timing:
    
    [   12.002713] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready
    [   12.008819] IPv6: ADDRCONF(NETDEV_UP): eth1.1: link is not ready
    [   12.118877] random: procd: uninitialized urandom read (4 bytes read)
    [   13.068614] eth1: link up (1000Mbps/Full duplex)
    [   13.073309] IPv6: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
    [   13.080445] IPv6: ADDRCONF(NETDEV_CHANGE): eth1.1: link becomes ready
    
    Since the UDP message was sent prior to link becoming ready, it was
    never seen on the wire.
    
    The default failsafe timeout is set to 2 seconds, so with this patch
    there are two attempts to send the message, one spent in vain, and the
    other visible in tcpdump on an attached host. Of course, in cases when
    the interface is brought up faster it leads to two messages, however it
    should be harmless. This patch (almost) doesn't affect normal boot time
    while still allowing to enter failsafe reliably with a single button
    press, matching the official "generic failsafe" documentation.
    
    Signed-off-by: default avatarPaul Fertser <fercerpav@gmail.com>