close(s);
}
-void add_to_bridge(const char *bridge, const char *interface)
+void add_to_bridge(const char *bridge, const char *interface,
+ bool mandatory)
{
int s, rc;
struct ifbreq ifbr;
ifd.ifd_len = sizeof(ifbr);
ifd.ifd_data = &ifbr;
rc = ioctl(s, SIOCSDRVSPEC, &ifd);
- if (rc < 0)
+ if (rc < 0 && mandatory)
err(1, "SIOCSDRVSPEC");
close(s);
new_interface("tap2");
new_interface("bridge0");
- add_to_bridge("bridge0", "tap0");
- add_to_bridge("bridge0", "tap1");
- add_to_bridge("bridge0", "tap2");
+ add_to_bridge("bridge0", "tap0", true);
+ add_to_bridge("bridge0", "tap1", true);
+ add_to_bridge("bridge0", "tap2", true);
- add_to_bridge("bridge0", "xenif0");
+ add_to_bridge("bridge0", "xenif0", false);
+ add_to_bridge("bridge0", "xenif1", false);
sleep(1000000);
return 0;