[prev in list] [next in list] [prev in thread] [next in thread] 

List:       busybox
Subject:    Re: [PATCH 08/19] udhcpc: refresh ifindex before sending data.
From:       Denys Vlasenko <vda.linux () googlemail ! com>
Date:       2012-09-29 14:46:09
Message-ID: 201209291646.09536.vda.linux () googlemail ! com
[Download RAW message or body]

On Tuesday 25 September 2012 14:06, Florian Fainelli wrote:
> From: Felix Fietkau <nbd@openwrt.org>
> 
> When running on a bridge the ifindex may have changed (e.g. the member
> interface were added/removed or if the status of the bridge changed).
> Refresh the interface interface index before processing the next packet.
> 
> Signed-off-by: Felix Fietkau <nbd@openwrt.org>
> ---
> networking/udhcp/dhcpc.c |    6 ++++++
> 1 file changed, 6 insertions(+)
> 
> diff --git a/networking/udhcp/dhcpc.c b/networking/udhcp/dhcpc.c
> index f1013f4..7d38d9d 100644
> --- a/networking/udhcp/dhcpc.c
> +++ b/networking/udhcp/dhcpc.c
> @@ -1390,6 +1390,12 @@ int udhcpc_main(int argc UNUSED_PARAM, char **argv)
> 		/* silence "uninitialized!" warning */
> 		unsigned timestamp_before_wait = timestamp_before_wait;
> 
> +		/* When running on a bridge, the ifindex may have changed (e.g. if
> +		 * member interfaces were added/removed or if the status of the
> +		 * bridge changed).
> +		 * Workaround: refresh it here before processing the next packet */
> +		udhcp_read_interface(client_config.interface, &client_config.ifindex, NULL, \
> client_config.client_mac); +
> 		//bb_error_msg("sockfd:%d, listen_mode:%d", sockfd, listen_mode);
> 
> 		/* Was opening raw or udp socket here


This is already done in current git:

networking/udhcp/dhcpc.c


                /* If timeout dropped to zero, time to become active:
                 * resend discover/renew/whatever
                 */
                if (retval == 0) {
                        /* When running on a bridge, the ifindex may have changed
                         * (e.g. if member interfaces were added/removed
                         * or if the status of the bridge changed).
                         * Refresh ifindex and client_mac:
                         */
                        if (udhcp_read_interface(client_config.interface,
                                        &client_config.ifindex,
                                        NULL,
                                        client_config.client_mac)
                        ) {
                                goto ret0; /* iface is gone? */
                        }
                        if (clientid_mac_ptr)
                                memcpy(clientid_mac_ptr, client_config.client_mac, \
6); _______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic