fill_arp_packet(&pkt, rif, rif->src_ip, ipaddr);
pkt.arp.arp_op = htons(ARPOP_REQUEST);
- memcpy(pkt.arp.arp_spa, rif->src_ip, ETH_ALEN);
+ memcpy(pkt.arp.arp_spa, rif->src_ip, sizeof(pkt.arp.arp_spa));
memset(pkt.arp.arp_tha, 0, ETH_ALEN);
memset(pkt.eth.ether_dhost, 0xff, ETH_ALEN);
if (strlen(ifname) >= IFNAMSIZ)
return NULL;
+ list_for_each_entry(rif, &interfaces, list) {
+ if (!strncmp(rif->ifname, ifname, IFNAMSIZ))
+ return rif;
+ }
+
rif = calloc(1, sizeof(*rif));
if (!rif)
return NULL;
struct relayd_interface *rif = NULL;
struct in_addr addr, addr2;
bool local_addr_valid = false;
- bool managed;
+ bool managed = false;
int ifnum = 0;
char *s, *s2;
int mask;