netdev-linux: Open AF_PACKET socket only when it is needed.
authorBen Pfaff <blp@nicira.com>
Mon, 2 May 2011 16:53:31 +0000 (09:53 -0700)
committerBen Pfaff <blp@nicira.com>
Fri, 13 May 2011 21:45:53 +0000 (14:45 -0700)
commit488d734d6e57cd209058fd7d1a18abdf46b6bf51
treef77f47a5b824f2b33972dffdd79b23e1f6396caf
parentbd3932826b3d9153f6d026adaad2439ac23f2fcd
netdev-linux: Open AF_PACKET socket only when it is needed.

Only a privileged process can open a raw AF_PACKET socket, so netdev-linux
will fail to initialize if run as non-root and you get a cascade of error
messages, like this:

netdev_linux|ERR|failed to create packet socket: Operation not permitted
netdev|ERR|failed to initialize system network device class: Operation not permitted
netdev|ERR|failed to initialize internal network device class: Operation not permitted
netdev|ERR|failed to initialize tap network device class: Operation not permitted

But in fact the AF_PACKET socket is not needed for most operations (only
for sending packets) and it is never needed for testing with the "dummy"
datapath and network device, so we can avoid logging all of these errors
by opening the packet socket only on demand, as this commit does.

Reviewed-by: Simon Horman <horms@verge.net.au>
lib/netdev-linux.c