Ping. On 20.03.2013 15:31, Andreas Oberritter wrote: > * This is more efficient than doing it in the scripts > > Signed-off-by: Andreas Oberritter <[email protected]> > --- > networking/udhcp/common.h | 2 +- > networking/udhcp/dhcpc.c | 17 +++++++++++++++++ > 2 files changed, 18 insertions(+), 1 deletion(-) > > diff --git a/networking/udhcp/common.h b/networking/udhcp/common.h > index 0e8e45f..af8c105 100644 > --- a/networking/udhcp/common.h > +++ b/networking/udhcp/common.h > @@ -126,7 +126,7 @@ enum { > //#define DHCP_ROOT_PATH 0x11 > //#define DHCP_IP_TTL 0x17 > //#define DHCP_MTU 0x1a > -//#define DHCP_BROADCAST 0x1c > +#define DHCP_BROADCAST 0x1c > //#define DHCP_ROUTES 0x21 > //#define DHCP_NIS_DOMAIN 0x28 > //#define DHCP_NIS_SERVER 0x29 > diff --git a/networking/udhcp/dhcpc.c b/networking/udhcp/dhcpc.c > index 0862288..fe2e681 100644 > --- a/networking/udhcp/dhcpc.c > +++ b/networking/udhcp/dhcpc.c > @@ -533,6 +533,23 @@ static char **fill_envp(struct dhcp_packet *packet) > i++; > } > > + /* Calculate the broadcast address, if it wasn't provided > + * by the server, but a subnet mask of /30 or lower was given. > + */ > + if (udhcp_get_option(packet, DHCP_BROADCAST) == NULL) { > + temp = udhcp_get_option(packet, DHCP_SUBNET); > + if (temp) { > + uint32_t subnet; > + move_from_unaligned32(subnet, temp); > + if (ntohl(subnet) <= 0xfffffffc) { > + uint32_t broadcast = packet->yiaddr | ~subnet; > + *curr = > xmalloc(sizeof("broadcast=255.255.255.255")); > + sprint_nip(*curr, "broadcast=", (uint8_t > *)&broadcast); > + putenv(*curr++); > + } > + } > + } > + > return envp; > } > >
_______________________________________________ busybox mailing list [email protected] http://lists.busybox.net/mailman/listinfo/busybox
