|
Lines 375-380
static void rtnl_recv_newlink(struct nlmsghdr *nh)
Link Here
|
| 375 |
struct iff *iff, *real_dev; |
375 |
struct iff *iff, *real_dev; |
| 376 |
struct fcf_list_head *head; |
376 |
struct fcf_list_head *head; |
| 377 |
bool running; |
377 |
bool running; |
|
|
378 |
char mac_addr[ETHER_ADDR_LEN]; |
| 379 |
char ifname[IFNAMSIZ]; |
| 380 |
|
| 378 |
|
381 |
|
| 379 |
if (config.vn2vn) |
382 |
if (config.vn2vn) |
| 380 |
head = &vn2vns; |
383 |
head = &vn2vns; |
|
Lines 430-441
static void rtnl_recv_newlink(struct nlmsghdr *nh)
Link Here
|
| 430 |
return; |
433 |
return; |
| 431 |
} |
434 |
} |
| 432 |
|
435 |
|
| 433 |
iff = malloc(sizeof(*iff)); |
436 |
iff = malloc(sizeof(struct iff)); |
| 434 |
if (!iff) { |
437 |
if (!iff) { |
| 435 |
FIP_LOG_ERRNO("malloc failed"); |
438 |
FIP_LOG_ERRNO("malloc failed"); |
| 436 |
return; |
439 |
return; |
| 437 |
} |
440 |
} |
| 438 |
memset(iff, 0, sizeof(*iff)); |
441 |
memset(iff, 0, sizeof(struct iff)); |
| 439 |
TAILQ_INIT(&iff->vlans); |
442 |
TAILQ_INIT(&iff->vlans); |
| 440 |
|
443 |
|
| 441 |
parse_ifinfo(ifla, nh); |
444 |
parse_ifinfo(ifla, nh); |
|
Lines 447-454
static void rtnl_recv_newlink(struct nlmsghdr *nh)
Link Here
|
| 447 |
iff->iflink = *(int *)RTA_DATA(ifla[IFLA_LINK]); |
450 |
iff->iflink = *(int *)RTA_DATA(ifla[IFLA_LINK]); |
| 448 |
else |
451 |
else |
| 449 |
iff->iflink = iff->ifindex; |
452 |
iff->iflink = iff->ifindex; |
| 450 |
memcpy(iff->mac_addr, RTA_DATA(ifla[IFLA_ADDRESS]), ETHER_ADDR_LEN); |
453 |
|
| 451 |
strncpy(iff->ifname, RTA_DATA(ifla[IFLA_IFNAME]), IFNAMSIZ); |
454 |
/* |
|
|
455 |
* copy MAC address and interface name using intermediate |
| 456 |
* arrays, so gcc-11 knows we are not overflowing buffers |
| 457 |
*/ |
| 458 |
memcpy(mac_addr, RTA_DATA(ifla[IFLA_ADDRESS]), |
| 459 |
ETHER_ADDR_LEN); |
| 460 |
memcpy(iff->mac_addr, mac_addr, ETHER_ADDR_LEN); |
| 461 |
memcpy(ifname, RTA_DATA(ifla[IFLA_IFNAME]), IFNAMSIZ); |
| 462 |
memcpy(iff->ifname, ifname, IFNAMSIZ); |
| 452 |
iff->ifname[IFNAMSIZ - 1] = '\0'; |
463 |
iff->ifname[IFNAMSIZ - 1] = '\0'; |
| 453 |
|
464 |
|
| 454 |
if (ifla[IFLA_LINKINFO]) { |
465 |
if (ifla[IFLA_LINKINFO]) { |