|
@@ -367,6 +367,24 @@ int main(int argc, char **argv)
|
|
|
goto cleanup;
|
|
|
}
|
|
|
|
|
|
+ /* Linux uses the lowest enslaved MAC address as the MAC address of
|
|
|
+ * the bridge. Set MAC address to a high value so that it doesn't
|
|
|
+ * affect the MAC address of the bridge.
|
|
|
+ */
|
|
|
+ if (ioctl(ctlfd, SIOCGIFHWADDR, &ifr) < 0) {
|
|
|
+ fprintf(stderr, "failed to get MAC address of device `%s': %s\n",
|
|
|
+ iface, strerror(errno));
|
|
|
+ ret = EXIT_FAILURE;
|
|
|
+ goto cleanup;
|
|
|
+ }
|
|
|
+ ifr.ifr_hwaddr.sa_data[0] = 0xFE;
|
|
|
+ if (ioctl(ctlfd, SIOCSIFHWADDR, &ifr) < 0) {
|
|
|
+ fprintf(stderr, "failed to set MAC address of device `%s': %s\n",
|
|
|
+ iface, strerror(errno));
|
|
|
+ ret = EXIT_FAILURE;
|
|
|
+ goto cleanup;
|
|
|
+ }
|
|
|
+
|
|
|
/* add the interface to the bridge */
|
|
|
prep_ifreq(&ifr, bridge);
|
|
|
ifindex = if_nametoindex(iface);
|