72
if ((ip = calloc(1, sizeof(*ip))) == NULL)
75
if ((ip->arp = arp_open()) == NULL ||
76
(ip->intf = intf_open()) == NULL ||
77
(ip->route = route_open()) == NULL)
78
return (ip_close(ip));
80
if ((ip->fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
81
return (ip_close(ip));
83
memset(&ip->sin, 0, sizeof(ip->sin));
84
ip->sin.sin_family = AF_INET;
85
ip->sin.sin_port = htons(666);
87
LIST_INIT(&ip->ip_intf_list);
89
if (intf_loop(ip->intf, _add_ip_intf, ip) != 0)
90
return (ip_close(ip));
72
if ((ip = calloc(1, sizeof(*ip))) != NULL) {
75
if ((ip->arp = arp_open()) == NULL ||
76
(ip->intf = intf_open()) == NULL ||
77
(ip->route = route_open()) == NULL)
78
return (ip_close(ip));
80
if ((ip->fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
81
return (ip_close(ip));
83
memset(&ip->sin, 0, sizeof(ip->sin));
84
ip->sin.sin_family = AF_INET;
85
ip->sin.sin_port = htons(666);
87
LIST_INIT(&ip->ip_intf_list);
89
if (intf_loop(ip->intf, _add_ip_intf, ip) != 0)
90
return (ip_close(ip));
223
223
ip_close(ip_t *ip)
225
225
struct ip_intf *ipi, *nxt;
227
for (ipi = LIST_FIRST(&ip->ip_intf_list);
228
ipi != LIST_END(&ip->ip_intf_list); ipi = nxt) {
229
nxt = LIST_NEXT(ipi, next);
230
if (ipi->eth != NULL)
228
for (ipi = LIST_FIRST(&ip->ip_intf_list);
229
ipi != LIST_END(&ip->ip_intf_list); ipi = nxt) {
230
nxt = LIST_NEXT(ipi, next);
231
if (ipi->eth != NULL)
237
if (ip->route != NULL)
238
route_close(ip->route);
239
if (ip->intf != NULL)
240
intf_close(ip->intf);
234
if (ip->fd > 0) close(ip->fd);
235
if (ip->route != NULL) route_close(ip->route);
236
if (ip->intf != NULL) intf_close(ip->intf);
237
if (ip->arp != NULL) arp_close(ip->arp);