On 11/02/2011 06:58 AM, Stefan Hajnoczi wrote:
On Tue, Nov 1, 2011 at 5:13 PM, Corey Bryant<cor...@linux.vnet.ibm.com>  wrote:
+static bool has_vnet_hdr(int fd)
+{
+    unsigned int features = 0;
+    struct ifreq ifreq;
+
+    if (ioctl(fd, TUNGETFEATURES,&features) == -1) {
+        return false;
+    }
+
+    if (!(features&  IFF_VNET_HDR)) {
+        return false;
+    }
+
+    if (ioctl(fd, TUNGETIFF,&ifreq) != -1 || errno != EBADFD) {
+        return false;
+    }

I don't understand this expression.  We want TUNGETIFF to fail with
EBADFD, otherwise we return false.  What is this trying to do?

Why do we even need TUNGETIFF after TUNGETFEATURES succeeded and we
were able to check out the IFF_VNET_HDR flag?

Stefan


I don't think the TUNGETIFF call is necessary. It verifies that the tap device doesn't already exist. The ensuing TUNSETIFF call should already cover this.

Regards,
Corey


Reply via email to