commit d88b4b5b223006c88f6835e00650a6b24cabdb95
parent a40b06a0e24b54bdec276dc2bbcefc0605d1cb80
Author: Yersa Nordman <yersa@finwo.nl>
Date: Mon, 13 Mar 2023 23:14:10 +0100
Re-enable setting the mac address on the bond
Diffstat:
1 file changed, 17 insertions(+), 14 deletions(-)
diff --git a/src/util/socket.c b/src/util/socket.c
@@ -117,19 +117,6 @@ int tap_alloc(char * ifname, unsigned char * mac) {
if( *ifname ) {
strncpy(ifr.ifr_name, ifname, IFNAMSIZ);
}
- /* if ( mac ) { */
- /* // TODO: random, copied or specific mac address pulled from ini */
- /* printf("MAC: %.2X-%.2X-%.2X-%.2X-%.2X-%.2X\n",mac[0],mac[1],mac[2],mac[3],mac[4],mac[5]); */
- /* memset(&ifr, 0, sizeof(ifr)); */
- /* strcpy(ifr.ifr_name, ifname); */
- /* ifr.ifr_hwaddr.sa_family = ARPHRD_ETHER; */
- /* memcpy(ifr.ifr_hwaddr.sa_data, mac, ETH_ALEN); */
- /* if ((err = if_ioctl(SIOCSIFHWADDR, &ifr)) < 0) { */
- /* perror("Set if hwaddr"); */
- /* close(fd); */
- /* return err; */
- /* } */
- /* } */
if( (err = ioctl(fd, TUNSETIFF, (void *) &ifr)) < 0 ){
perror("Open tun");
close(fd);
@@ -137,7 +124,21 @@ int tap_alloc(char * ifname, unsigned char * mac) {
}
strcpy(ifname, ifr.ifr_name);
- // Set interface to multicast|broadcast
+ // Set the interface's mac address
+ if ( mac ) {
+ // TODO: random, copied or specific mac address pulled from ini
+ memset(&ifr, 0, sizeof(ifr));
+ strcpy(ifr.ifr_name, ifname);
+ ifr.ifr_hwaddr.sa_family = ARPHRD_ETHER;
+ memcpy(ifr.ifr_hwaddr.sa_data, mac, ETH_ALEN);
+ if ((err = if_ioctl(SIOCSIFHWADDR, &ifr)) < 0) {
+ perror("Set if hwaddr");
+ close(fd);
+ return err;
+ }
+ }
+
+ // Fetch the current flags
memset(&ifr, 0, sizeof(ifr));
strcpy(ifr.ifr_name, ifname);
if (if_ioctl(SIOCGIFFLAGS, &ifr) < 0) {
@@ -145,6 +146,8 @@ int tap_alloc(char * ifname, unsigned char * mac) {
close(fd);
return err;
}
+
+ // Bring up the interface
if (!(ifr.ifr_flags & IFF_UP)) {
ifr.ifr_flags |= IFF_UP;
if (if_ioctl(SIOCSIFFLAGS, &ifr) < 0) {