int arp_network_send_raw_socket(int fd, const union sockaddr_union *link,
const struct ether_arp *arp) {
+ int r;
+
assert(arp);
assert(link);
assert(fd >= 0);
- if (sendto(fd, arp, sizeof(struct ether_arp), 0, &link->sa, sizeof(link->ll)) < 0)
+ r = sendto(fd, arp, sizeof(struct ether_arp), 0, &link->sa, sizeof(link->ll));
+ if (r < 0)
return -errno;
return 0;
.len = ELEMENTSOF(filter),
.filter = filter
};
- int s;
+ _cleanup_close_ int s = -1;
+ int r;
assert(index > 0);
assert(link);
if (s < 0)
return -errno;
- if (setsockopt(s, SOL_SOCKET, SO_ATTACH_FILTER, &fprog, sizeof(fprog)) < 0) {
+ r = setsockopt(s, SOL_SOCKET, SO_ATTACH_FILTER, &fprog, sizeof(fprog));
+ if (r < 0)
return -errno;
- }
link->ll.sll_family = AF_PACKET;
link->ll.sll_protocol = htons(ETH_P_ARP);
link->ll.sll_halen = ETH_ALEN;
memset(link->ll.sll_addr, 0xff, ETH_ALEN);
- if (bind(s, &link->sa, sizeof(link->ll)) < 0) {
- safe_close(s);
+ r = bind(s, &link->sa, sizeof(link->ll));
+ if (r < 0)
return -errno;
- }
- return s;
+ r = s;
+ s = -1;
+
+ return r;
}