| 1290 | } |
| 1291 | |
| 1292 | static struct llentry * |
| 1293 | in_lltable_new(struct in_addr addr4, u_int flags) |
| 1294 | { |
| 1295 | struct in_llentry *lle; |
| 1296 | |
| 1297 | lle = malloc(sizeof(struct in_llentry), M_LLTABLE, M_NOWAIT | M_ZERO); |
| 1298 | if (lle == NULL) /* NB: caller generates msg */ |
| 1299 | return NULL; |
| 1300 | |
| 1301 | /* |
| 1302 | * For IPv4 this will trigger "arpresolve" to generate |
| 1303 | * an ARP request. |
| 1304 | */ |
| 1305 | lle->base.la_expire = time_uptime; /* mark expired */ |
| 1306 | lle->base.r_l3addr.addr4 = addr4; |
| 1307 | lle->base.lle_refcnt = 1; |
| 1308 | lle->base.lle_free = in_lltable_destroy_lle; |
| 1309 | LLE_LOCK_INIT(&lle->base); |
| 1310 | LLE_REQ_INIT(&lle->base); |
| 1311 | callout_init(&lle->base.lle_timer, 1); |
| 1312 | |
| 1313 | return (&lle->base); |
| 1314 | } |
| 1315 | |
| 1316 | #define IN_ARE_MASKED_ADDR_EQUAL(d, a, m) ( \ |
| 1317 | ((((d).s_addr ^ (a).s_addr) & (m).s_addr)) == 0 ) |
no test coverage detected