X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fnetdev.c;h=965bdbf6c96e073a9b18bdcc5dd8205b9057ccf8;hb=7671589afbe5e7ff8a7f2e730ed077416e419fa8;hp=481671f798e1c9d3a518ebed0df4babc62e0f49f;hpb=9af9e2e8cff919c6053d862703ac228ce1a15bdd;p=sliver-openvswitch.git diff --git a/lib/netdev.c b/lib/netdev.c index 481671f79..965bdbf6c 100644 --- a/lib/netdev.c +++ b/lib/netdev.c @@ -377,11 +377,27 @@ netdev_get_features(struct netdev *netdev, uint32_t *supported, uint32_t *peer) { uint32_t dummy[4]; - return netdev->class->get_features(netdev, - current ? current : &dummy[0], - advertised ? advertised : &dummy[1], - supported ? supported : &dummy[2], - peer ? peer : &dummy[3]); + int error; + + if (!current) { + current = &dummy[0]; + } + if (!advertised) { + advertised = &dummy[1]; + } + if (!supported) { + supported = &dummy[2]; + } + if (!peer) { + peer = &dummy[3]; + } + + error = netdev->class->get_features(netdev, current, advertised, supported, + peer); + if (error) { + *current = *advertised = *supported = *peer = 0; + } + return error; } /* Set the features advertised by 'netdev' to 'advertise'. Returns 0 if