All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] net: Add interface to bridge when SIOCBRADDIF isn't available
@ 2012-07-12 13:24 Corey Bryant
  2012-07-13 15:16 ` Fabien Chouteau
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Corey Bryant @ 2012-07-12 13:24 UTC (permalink / raw)
  To: qemu-devel
  Cc: markmc, aliguori, rmarwah, Corey Bryant, chouteau, pbonzini, afaerber

The bridge helper uses the SIOCBRADDIF ioctl to add an inteface to
a bridge.  SIOCBRADDIF is not available on old Linux versions.  This
patch adds support to use the SIOCDEVPRIVATE ioctl with BRCTL_ADD_IF
if SIOCBRADDIF is not available.

Reported-by: Fabien Chouteau <chouteau@adacore.com>
Signed-off-by: Corey Bryant <coreyb@linux.vnet.ibm.com>
---
 qemu-bridge-helper.c |   24 +++++++++++++++++++++---
 1 file changed, 21 insertions(+), 3 deletions(-)

diff --git a/qemu-bridge-helper.c b/qemu-bridge-helper.c
index aec5008..652eec9 100644
--- a/qemu-bridge-helper.c
+++ b/qemu-bridge-helper.c
@@ -35,6 +35,10 @@
 
 #include <linux/sockios.h>
 
+#ifndef SIOCBRADDIF
+#include <linux/if_bridge.h>
+#endif
+
 #include "qemu-queue.h"
 
 #include "net/tap-linux.h"
@@ -221,6 +225,10 @@ static int drop_privileges(void)
 int main(int argc, char **argv)
 {
     struct ifreq ifr;
+#ifndef SIOCBRADDIF
+    unsigned long ifargs[4];
+#endif
+    int ifindex;
     int fd, ctlfd, unixfd = -1;
     int use_vnet = 0;
     int mtu;
@@ -361,9 +369,19 @@ int main(int argc, char **argv)
 
     /* add the interface to the bridge */
     prep_ifreq(&ifr, bridge);
-    ifr.ifr_ifindex = if_nametoindex(iface);
-
-    if (ioctl(ctlfd, SIOCBRADDIF, &ifr) == -1) {
+    ifindex = if_nametoindex(iface);
+#ifndef SIOCBRADDIF
+    ifargs[0] = BRCTL_ADD_IF;
+    ifargs[1] = ifindex;
+    ifargs[2] = 0;
+    ifargs[3] = 0;
+    ifr.ifr_data = (void *)ifargs;
+    ret = ioctl(ctlfd, SIOCDEVPRIVATE, &ifr);
+#else
+    ifr.ifr_ifindex = ifindex;
+    ret = ioctl(ctlfd, SIOCBRADDIF, &ifr);
+#endif
+    if (ret == -1) {
         fprintf(stderr, "failed to add interface `%s' to bridge `%s': %s\n",
                 iface, bridge, strerror(errno));
         ret = EXIT_FAILURE;
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [Qemu-devel] [PATCH] net: Add interface to bridge when SIOCBRADDIF isn't available
  2012-07-12 13:24 [Qemu-devel] [PATCH] net: Add interface to bridge when SIOCBRADDIF isn't available Corey Bryant
@ 2012-07-13 15:16 ` Fabien Chouteau
  2012-07-24 11:20 ` Paolo Bonzini
  2012-07-24 16:03 ` Stefan Hajnoczi
  2 siblings, 0 replies; 4+ messages in thread
From: Fabien Chouteau @ 2012-07-13 15:16 UTC (permalink / raw)
  To: Corey Bryant; +Cc: markmc, aliguori, rmarwah, qemu-devel, pbonzini, afaerber

On 07/12/2012 03:24 PM, Corey Bryant wrote:
> The bridge helper uses the SIOCBRADDIF ioctl to add an inteface to
> a bridge.  SIOCBRADDIF is not available on old Linux versions.  This
> patch adds support to use the SIOCDEVPRIVATE ioctl with BRCTL_ADD_IF
> if SIOCBRADDIF is not available.
> 

I don't have time to test it, but the code looks good and in compiles.

Acked-by: Fabien Chouteau <chouteau@adacore.com>

> Reported-by: Fabien Chouteau <chouteau@adacore.com>
> Signed-off-by: Corey Bryant <coreyb@linux.vnet.ibm.com>
> ---
>  qemu-bridge-helper.c |   24 +++++++++++++++++++++---
>  1 file changed, 21 insertions(+), 3 deletions(-)
> 
> diff --git a/qemu-bridge-helper.c b/qemu-bridge-helper.c
> index aec5008..652eec9 100644
> --- a/qemu-bridge-helper.c
> +++ b/qemu-bridge-helper.c
> @@ -35,6 +35,10 @@
>  
>  #include <linux/sockios.h>
>  
> +#ifndef SIOCBRADDIF
> +#include <linux/if_bridge.h>
> +#endif
> +
>  #include "qemu-queue.h"
>  
>  #include "net/tap-linux.h"
> @@ -221,6 +225,10 @@ static int drop_privileges(void)
>  int main(int argc, char **argv)
>  {
>      struct ifreq ifr;
> +#ifndef SIOCBRADDIF
> +    unsigned long ifargs[4];
> +#endif
> +    int ifindex;
>      int fd, ctlfd, unixfd = -1;
>      int use_vnet = 0;
>      int mtu;
> @@ -361,9 +369,19 @@ int main(int argc, char **argv)
>  
>      /* add the interface to the bridge */
>      prep_ifreq(&ifr, bridge);
> -    ifr.ifr_ifindex = if_nametoindex(iface);
> -
> -    if (ioctl(ctlfd, SIOCBRADDIF, &ifr) == -1) {
> +    ifindex = if_nametoindex(iface);
> +#ifndef SIOCBRADDIF
> +    ifargs[0] = BRCTL_ADD_IF;
> +    ifargs[1] = ifindex;
> +    ifargs[2] = 0;
> +    ifargs[3] = 0;
> +    ifr.ifr_data = (void *)ifargs;
> +    ret = ioctl(ctlfd, SIOCDEVPRIVATE, &ifr);
> +#else
> +    ifr.ifr_ifindex = ifindex;
> +    ret = ioctl(ctlfd, SIOCBRADDIF, &ifr);
> +#endif
> +    if (ret == -1) {
>          fprintf(stderr, "failed to add interface `%s' to bridge `%s': %s\n",
>                  iface, bridge, strerror(errno));
>          ret = EXIT_FAILURE;
> 


-- 
Fabien Chouteau

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Qemu-devel] [PATCH] net: Add interface to bridge when SIOCBRADDIF isn't available
  2012-07-12 13:24 [Qemu-devel] [PATCH] net: Add interface to bridge when SIOCBRADDIF isn't available Corey Bryant
  2012-07-13 15:16 ` Fabien Chouteau
@ 2012-07-24 11:20 ` Paolo Bonzini
  2012-07-24 16:03 ` Stefan Hajnoczi
  2 siblings, 0 replies; 4+ messages in thread
From: Paolo Bonzini @ 2012-07-24 11:20 UTC (permalink / raw)
  To: Corey Bryant
  Cc: markmc, aliguori, Stefan Hajnoczi, rmarwah, qemu-devel, chouteau,
	afaerber

Il 12/07/2012 15:24, Corey Bryant ha scritto:
> The bridge helper uses the SIOCBRADDIF ioctl to add an inteface to
> a bridge.  SIOCBRADDIF is not available on old Linux versions.  This
> patch adds support to use the SIOCDEVPRIVATE ioctl with BRCTL_ADD_IF
> if SIOCBRADDIF is not available.
> 
> Reported-by: Fabien Chouteau <chouteau@adacore.com>
> Signed-off-by: Corey Bryant <coreyb@linux.vnet.ibm.com>
> ---
>  qemu-bridge-helper.c |   24 +++++++++++++++++++++---
>  1 file changed, 21 insertions(+), 3 deletions(-)
> 
> diff --git a/qemu-bridge-helper.c b/qemu-bridge-helper.c
> index aec5008..652eec9 100644
> --- a/qemu-bridge-helper.c
> +++ b/qemu-bridge-helper.c
> @@ -35,6 +35,10 @@
>  
>  #include <linux/sockios.h>
>  
> +#ifndef SIOCBRADDIF
> +#include <linux/if_bridge.h>
> +#endif
> +
>  #include "qemu-queue.h"
>  
>  #include "net/tap-linux.h"
> @@ -221,6 +225,10 @@ static int drop_privileges(void)
>  int main(int argc, char **argv)
>  {
>      struct ifreq ifr;
> +#ifndef SIOCBRADDIF
> +    unsigned long ifargs[4];
> +#endif
> +    int ifindex;
>      int fd, ctlfd, unixfd = -1;
>      int use_vnet = 0;
>      int mtu;
> @@ -361,9 +369,19 @@ int main(int argc, char **argv)
>  
>      /* add the interface to the bridge */
>      prep_ifreq(&ifr, bridge);
> -    ifr.ifr_ifindex = if_nametoindex(iface);
> -
> -    if (ioctl(ctlfd, SIOCBRADDIF, &ifr) == -1) {
> +    ifindex = if_nametoindex(iface);
> +#ifndef SIOCBRADDIF
> +    ifargs[0] = BRCTL_ADD_IF;
> +    ifargs[1] = ifindex;
> +    ifargs[2] = 0;
> +    ifargs[3] = 0;
> +    ifr.ifr_data = (void *)ifargs;
> +    ret = ioctl(ctlfd, SIOCDEVPRIVATE, &ifr);
> +#else
> +    ifr.ifr_ifindex = ifindex;
> +    ret = ioctl(ctlfd, SIOCBRADDIF, &ifr);
> +#endif
> +    if (ret == -1) {
>          fprintf(stderr, "failed to add interface `%s' to bridge `%s': %s\n",
>                  iface, bridge, strerror(errno));
>          ret = EXIT_FAILURE;
> 

Ping? (Adding Stefan to the list).

Paolo

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Qemu-devel] [PATCH] net: Add interface to bridge when SIOCBRADDIF isn't available
  2012-07-12 13:24 [Qemu-devel] [PATCH] net: Add interface to bridge when SIOCBRADDIF isn't available Corey Bryant
  2012-07-13 15:16 ` Fabien Chouteau
  2012-07-24 11:20 ` Paolo Bonzini
@ 2012-07-24 16:03 ` Stefan Hajnoczi
  2 siblings, 0 replies; 4+ messages in thread
From: Stefan Hajnoczi @ 2012-07-24 16:03 UTC (permalink / raw)
  To: Corey Bryant
  Cc: markmc, aliguori, rmarwah, qemu-devel, chouteau, pbonzini, afaerber

On Thu, Jul 12, 2012 at 09:24:31AM -0400, Corey Bryant wrote:
> The bridge helper uses the SIOCBRADDIF ioctl to add an inteface to
> a bridge.  SIOCBRADDIF is not available on old Linux versions.  This
> patch adds support to use the SIOCDEVPRIVATE ioctl with BRCTL_ADD_IF
> if SIOCBRADDIF is not available.
> 
> Reported-by: Fabien Chouteau <chouteau@adacore.com>
> Signed-off-by: Corey Bryant <coreyb@linux.vnet.ibm.com>
> ---
>  qemu-bridge-helper.c |   24 +++++++++++++++++++++---
>  1 file changed, 21 insertions(+), 3 deletions(-)

Thanks, applied to the net tree:
https://github.com/stefanha/qemu/commits/net

(Not pushed yet but will be available there once the existing net pull
request is merged.)

Stefan

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2012-07-24 16:03 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-07-12 13:24 [Qemu-devel] [PATCH] net: Add interface to bridge when SIOCBRADDIF isn't available Corey Bryant
2012-07-13 15:16 ` Fabien Chouteau
2012-07-24 11:20 ` Paolo Bonzini
2012-07-24 16:03 ` Stefan Hajnoczi

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.