From: YAMAMOTO Takashi Date: Tue, 21 May 2013 08:49:56 +0000 (+0900) Subject: netdev-bsd: NetBSD: keep a AF_LINK socket open X-Git-Tag: sliver-openvswitch-1.10.90-3~6^2~228 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=ab317c3b06824617bd5792516530c0a6e120f7e9;p=sliver-openvswitch.git netdev-bsd: NetBSD: keep a AF_LINK socket open this will be used for get_stats and set_etheraddr Signed-off-by: YAMAMOTO Takashi Signed-off-by: Ben Pfaff --- diff --git a/lib/netdev-bsd.c b/lib/netdev-bsd.c index a5b7c9350..0514bf91d 100644 --- a/lib/netdev-bsd.c +++ b/lib/netdev-bsd.c @@ -105,6 +105,11 @@ enum { /* An AF_INET socket (used for ioctl operations). */ static int af_inet_sock = -1; +#if defined(__NetBSD__) +/* AF_LINK socket used for netdev_bsd_get_stats and set_etheraddr */ +static int af_link_sock = -1; +#endif /* defined(__NetBSD__) */ + #define PCAP_SNAPLEN 2048 @@ -179,9 +184,17 @@ netdev_bsd_init(void) af_inet_sock = socket(AF_INET, SOCK_DGRAM, 0); status = af_inet_sock >= 0 ? 0 : errno; - if (status) { VLOG_ERR("failed to create inet socket: %s", strerror(status)); + return status; + } + + af_link_sock = socket(AF_LINK, SOCK_DGRAM, 0); + status = af_link_sock >= 0 ? 0 : errno; + if (status) { + VLOG_ERR("failed to create link socket: %s", strerror(status)); + close(af_inet_sock); + af_inet_sock = -1; } return status;