# [Solved] brctl missing in net-misc/bridge-utils

## Bail0ng

I miss /sbin/brctl:

```

hetzner ~ # equery files --tree bridge-utils

 * Searching for bridge-utils ...

 * Contents of net-misc/bridge-utils-1.4:

 /usr

   > /share

      > /doc

         > /bridge-utils-1.4

            + AUTHORS.bz2

            + ChangeLog.bz2

            + FAQ.bz2

            + FIREWALL.bz2

            + HOWTO.bz2

            + PROJECTS.bz2

            + README.bz2

            + RPM-GPG-KEY.bz2

            + SMPNOTES.bz2

            + THANKS.bz2

            + TODO.bz2

            + WISHLIST.bz2

      > /man

         > /man8

            + brctl.8.bz2

```

```

hetzner ~ # ls -lsa /sbin/brctl

ls: cannot access /sbin/brctl: No such file or directory

```

```

hetzner ~ # /etc/init.d/net.br144 -v start

 * Bringing up interface br144

 *   Skipping module adsl due to missing program: /usr/sbin/adsl-start /usr/sbin/pppoe-start

 *   Skipping module br2684ctl due to missing program: br2684ctl

 *   Skipping module bridge due to missing program: brctl

 *   Skipping module clip due to missing program: /usr/sbin/atmsigd

 *   Skipping module netplugd due to missing program: /sbin/netplugd

 *   Skipping module ifplugd due to missing program: /usr/sbin/ifplugd

 *   Skipping module ipppd due to missing program: /usr/sbin/ipppd

 *   Skipping module iwconfig due to missing program: /sbin/iwconfig

 *   Skipping module firewalld due to missing program: firewall-cmd

 *   Skipping module pppd due to missing program: /usr/sbin/pppd

 *   Skipping module dhclient due to missing program: /sbin/dhclient

 *   Skipping module pump due to missing program: /sbin/pump

 *   Skipping module dhcpcd due to missing program: dhcpcd

 *   Loaded modules: apipa arping bonding tuntap ccwgroup ethtool macvlan macchanger macnet wpa_supplicant ssidnet iproute2 system vlan udhcpc ip6rd ip6to

 *   ERROR: interface br144 does not exist

 *   Ensure that you have loaded the correct kernel module for your hardware

 * ERROR: net.br144 failed to start

```

```

hetzner ~ # lsmod | grep bridge

bridge                 70582  0

stp                     1469  1 bridge

llc                     3272  2 stp,bridge

ipv6                  240421  27 bridge

```

What package do I need to install to get a working brctl?Last edited by Bail0ng on Thu Sep 05, 2013 3:03 pm; edited 1 time in total

----------

## eccerr0r

That is weird, have you tried re-building bridge-utils?  Mine is showing up just fine...?  Seems you're also missing some other stuff as well:

```
subaru bridge-utils # equery files --tree bridge-utils

 * Searching for bridge-utils ...

 * Contents of net-misc/bridge-utils-1.4:

 /sbin

   + brctl

 /usr

   > /include

      + libbridge.h

   > /lib64

      + libbridge.a

   > /share

      > /doc

         > /bridge-utils-1.4

            + AUTHORS.bz2

            + ChangeLog.bz2

            + FAQ.bz2

            + FIREWALL.bz2

            + HOWTO.bz2

            + PROJECTS.bz2

            + README.bz2

            + RPM-GPG-KEY.bz2

            + SMPNOTES.bz2

            + THANKS.bz2

            + TODO.bz2

            + WISHLIST.bz2

      > /man

         > /man8

            + brctl.8.bz2

```

I couldn't discern anything in the ebuild that would prohibit building these things...

----------

## Bail0ng

 *eccerr0r wrote:*   

> That is weird, have you tried re-building bridge-utils?  Mine is showing up just fine...?  Seems you're also missing some other stuff as well:

 

Yes, I even removed the source tarball and downloaded it from another mirror. Same result  :Sad: 

----------

## Bail0ng

OK, found the problem:

```

for x in libbridge brctl doc; do make - --jobserver-fds=3,4 -j -C $x ; done

make[1]: Entering directory `/var/tmp/portage/net-misc/bridge-utils-1.4/work/bridge-utils-1.4/libbridge'

x86_64-pc-linux-gnu-gcc -Wall -g -I/usr/include  -c libbridge_devif.c

x86_64-pc-linux-gnu-gcc -Wall -g -I/usr/include  -c libbridge_if.c

x86_64-pc-linux-gnu-gcc -Wall -g -I/usr/include  -c libbridge_init.c

x86_64-pc-linux-gnu-gcc -Wall -g -I/usr/include  -c libbridge_misc.c

In file included from libbridge.h:24:0,

                 from libbridge_misc.c:24:

/usr/include/linux/if_bridge.h:183:20: error: field 'ip6' has incomplete type

In file included from libbridge.h:24:0,

                 from libbridge_if.c:26:

/usr/include/linux/if_bridge.h:183:20: error: field 'ip6' has incomplete type

make[1]: *** [libbridge_misc.o] Error 1

make[1]: *** Waiting for unfinished jobs....

In file included from libbridge.h:24:0,

                 from libbridge_devif.c:28:

/usr/include/linux/if_bridge.h:183:20: error: field 'ip6' has incomplete type

In file included from libbridge.h:24:0,

                 from libbridge_init.c:28:

/usr/include/linux/if_bridge.h:183:20: error: field 'ip6' has incomplete type

make[1]: *** [libbridge_if.o] Error 1

make[1]: *** [libbridge_init.o] Error 1

make[1]: *** [libbridge_devif.o] Error 1

make[1]: Leaving directory `/var/tmp/portage/net-misc/bridge-utils-1.4/work/bridge-utils-1.4/libbridge'

make[1]: Entering directory `/var/tmp/portage/net-misc/bridge-utils-1.4/work/bridge-utils-1.4/brctl'

x86_64-pc-linux-gnu-gcc -Wall -O2 -pipe -I../libbridge -I/usr/include  -c brctl.c

x86_64-pc-linux-gnu-gcc -Wall -O2 -pipe -I../libbridge -I/usr/include  -c brctl_cmd.c

x86_64-pc-linux-gnu-gcc -Wall -O2 -pipe -I../libbridge -I/usr/include  -c brctl_disp.c

make[1]: *** No rule to make target `../libbridge/libbridge.a', needed by `brctl'.  Stop.

make[1]: *** Waiting for unfinished jobs....

In file included from ../libbridge/libbridge.h:24:0,

                 from brctl_disp.c:24:

/usr/include/linux/if_bridge.h:183:20: error: field 'ip6' has incomplete type

In file included from ../libbridge/libbridge.h:24:0,

                 from brctl.c:25:

/usr/include/linux/if_bridge.h:183:20: error: field 'ip6' has incomplete type

In file included from ../libbridge/libbridge.h:24:0,

                 from brctl_cmd.c:25:

/usr/include/linux/if_bridge.h:183:20: error: field 'ip6' has incomplete type

make[1]: *** [brctl.o] Error 1

make[1]: *** [brctl_disp.o] Error 1

make[1]: *** [brctl_cmd.o] Error 1

make[1]: Leaving directory `/var/tmp/portage/net-misc/bridge-utils-1.4/work/bridge-utils-1.4/brctl'

make[1]: Entering directory `/var/tmp/portage/net-misc/bridge-utils-1.4/work/bridge-utils-1.4/doc'

make[1]: Nothing to be done for `all'.

make[1]: Leaving directory `/var/tmp/portage/net-misc/bridge-utils-1.4/work/bridge-utils-1.4/doc'

>>> Source compiled.

```

Is this a bug or do I miss something somewhere?

----------

## Bail0ng

And there we go:

http://www.spinics.net/lists/netdev/msg241016.html

```

hetzner ~ # equery files --tree bridge-utils

 * Searching for bridge-utils ...

 * Contents of net-misc/bridge-utils-1.4:

 /sbin

   + brctl

 /usr

   > /include

      + libbridge.h

   > /lib64

      + libbridge.a

   > /share

      > /doc

         > /bridge-utils-1.4

            + AUTHORS.bz2

            + ChangeLog.bz2

            + FAQ.bz2

            + FIREWALL.bz2

            + HOWTO.bz2

            + PROJECTS.bz2

            + README.bz2

            + RPM-GPG-KEY.bz2

            + SMPNOTES.bz2

            + THANKS.bz2

            + TODO.bz2

            + WISHLIST.bz2

      > /man

         > /man8

            + brctl.8.bz2

```

Stupid bug....

----------

## eccerr0r

Did you hack the ebuild or applied a patch to fix this?

Just wondering if this should be pushed upstream or at least as a Gentoo bug? If it is a real issue... Not sure why I did not see this, and not sure how you got a partial build installed...

----------

## Bail0ng

No, I just applied the patch for the kernel headers, actually it's one line missing. Imho there is 2 issues: the bug in the kernel headers and that the ebuild did install despite of the compile error.

----------

## desultory

 *eccerr0r wrote:*   

> Just wondering if this should be pushed upstream or at least as a Gentoo bug?

 There appears to already be a bug filed for this problem, with a workaround in place in 1.4 and 1.5 due to be stabilized soon.

----------

## Hu

 *Bail0ng wrote:*   

> No, I just applied the patch for the kernel headers, actually it's one line missing. Imho there is 2 issues: the bug in the kernel headers and that the ebuild did install despite of the compile error.

 Actually, it is a bug in the upstream build system, not in the ebuild.  The use of a for loop to run sub-make processes is not only bad for parallelism, but also results in the error code not propagating correctly.  Consider:

```
for a in true false true; do $a; done; echo $?
```

That produces a success result of zero, even though the middle step reported failure.  It would be better for the Makefile to replace that for loop with dependencies on three pseudo-targets, each of which has as its command the expansion of that loop.

```
all: a b c

a c:

    true

b:

    false
```

```
$ make

true

false

make: *** [b] Error 1

```

----------

