From d5f69e93887cb9ad505b7ed6394891652f393885 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Thu, 29 Aug 2013 14:10:16 +0100 Subject: [netdevice] Add concept of a network device index IPv6 link-local socket addresses require some way to specify a local network device. We cannot simply use a pointer to the network device, since a struct sockaddr_in6 may be long-lived and has no way to hold a reference to the network device. Using a network device index allows a socket address to cleanly refer to a network device without worrying about whether or not that device continues to exist. Signed-off-by: Michael Brown --- src/net/netdevice.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/net/netdevice.c') diff --git a/src/net/netdevice.c b/src/net/netdevice.c index 5af9c6d..283632f 100644 --- a/src/net/netdevice.c +++ b/src/net/netdevice.c @@ -498,10 +498,11 @@ int register_netdev ( struct net_device *netdev ) { uint32_t seed; int rc; - /* Create device name */ + /* Record device index and create device name */ + netdev->index = ifindex++; if ( netdev->name[0] == '\0' ) { snprintf ( netdev->name, sizeof ( netdev->name ), "net%d", - ifindex++ ); + netdev->index ); } /* Set initial link-layer address, if not already set */ -- cgit v1.1