Lines Matching defs:pfx
289 struct prefix *pfx;
306 while ((pfx = TAILQ_FIRST(&rai->rai_prefix)) != NULL)
307 delete_prefix(pfx);
510 struct prefix *pfx;
518 ELM_MALLOC(pfx, exit(1));
519 pfx->pfx_rainfo = rai;
520 pfx->pfx_origin = PREFIX_FROM_CONFIG;
522 if (inet_pton(AF_INET6, addr, &pfx->pfx_prefix) != 1) {
528 if (IN6_IS_ADDR_MULTICAST(&pfx->pfx_prefix)) {
535 if (IN6_IS_ADDR_LINKLOCAL(&pfx->pfx_prefix))
549 pfx->pfx_prefixlen = (int)val;
562 pfx->pfx_onlinkflg = val & ND_OPT_PI_FLAG_ONLINK;
563 pfx->pfx_autoconfflg = val & ND_OPT_PI_FLAG_AUTO;
571 addr, pfx->pfx_prefixlen, ifi->ifi_ifname);
574 pfx->pfx_validlifetime = (uint32_t)val64;
581 pfx->pfx_vltimeexpire =
582 now.tv_sec + pfx->pfx_validlifetime;
592 addr, pfx->pfx_prefixlen, ifi->ifi_ifname);
595 pfx->pfx_preflifetime = (uint32_t)val64;
602 pfx->pfx_pltimeexpire =
603 now.tv_sec + pfx->pfx_preflifetime;
606 TAILQ_INSERT_TAIL(&rai->rai_prefix, pfx, pfx_next);
610 free(pfx);
1083 struct prefix *pfx;
1126 ELM_MALLOC(pfx, exit(1));
1129 pfx->pfx_prefixlen = plen;
1130 memcpy(&pfx->pfx_prefix, a, sizeof(*a));
1131 p = (char *)&pfx->pfx_prefix;
1132 ep = (char *)(&pfx->pfx_prefix + 1);
1137 if (!inet_ntop(AF_INET6, &pfx->pfx_prefix, ntopbuf,
1144 __func__, ntopbuf, pfx->pfx_prefixlen, ifi->ifi_ifname);
1147 pfx->pfx_validlifetime = DEF_ADVVALIDLIFETIME;
1148 pfx->pfx_preflifetime = DEF_ADVPREFERREDLIFETIME;
1149 pfx->pfx_onlinkflg = 1;
1150 pfx->pfx_autoconfflg = 1;
1151 pfx->pfx_origin = PREFIX_FROM_KERNEL;
1152 pfx->pfx_rainfo = rai;
1155 TAILQ_INSERT_TAIL(&rai->rai_prefix, pfx, pfx_next);
1184 struct prefix *pfx;
1189 ELM_MALLOC(pfx, return);
1190 pfx->pfx_prefix = ipr->ipr_prefix.sin6_addr;
1191 pfx->pfx_prefixlen = ipr->ipr_plen;
1192 pfx->pfx_validlifetime = ipr->ipr_vltime;
1193 pfx->pfx_preflifetime = ipr->ipr_pltime;
1194 pfx->pfx_onlinkflg = ipr->ipr_raf_onlink;
1195 pfx->pfx_autoconfflg = ipr->ipr_raf_auto;
1196 pfx->pfx_origin = PREFIX_FROM_DYNAMIC;
1197 pfx->pfx_rainfo = rai;
1199 TAILQ_INSERT_TAIL(&rai->rai_prefix, pfx, pfx_next);
1215 delete_prefix(struct prefix *pfx)
1221 rai = pfx->pfx_rainfo;
1223 TAILQ_REMOVE(&rai->rai_prefix, pfx, pfx_next);
1226 inet_ntop(AF_INET6, &pfx->pfx_prefix, ntopbuf,
1227 sizeof(ntopbuf)), pfx->pfx_prefixlen, ifi->ifi_ifname);
1228 if (pfx->pfx_timer)
1229 rtadvd_remove_timer(pfx->pfx_timer);
1230 free(pfx);
1236 invalidate_prefix(struct prefix *pfx)
1243 rai = pfx->pfx_rainfo;
1245 if (pfx->pfx_timer) { /* sanity check */
1254 inet_ntop(AF_INET6, &pfx->pfx_prefix, ntopbuf, sizeof(ntopbuf)),
1255 pfx->pfx_prefixlen, ifi->ifi_ifname, (long)prefix_timo);
1258 pfx->pfx_timer = rtadvd_add_timer(prefix_timeout, NULL, pfx, NULL);
1259 if (pfx->pfx_timer == NULL) {
1262 delete_prefix(pfx);
1266 rtadvd_set_timer(&timo, pfx->pfx_timer);
1279 update_prefix(struct prefix *pfx)
1285 rai = pfx->pfx_rainfo;
1287 if (pfx->pfx_timer == NULL) { /* sanity check */
1295 __func__, inet_ntop(AF_INET6, &pfx->pfx_prefix, ntopbuf,
1296 sizeof(ntopbuf)), pfx->pfx_prefixlen, ifi->ifi_ifname);
1299 rtadvd_remove_timer(pfx->pfx_timer);
1300 pfx->pfx_timer = NULL;
1391 struct prefix *pfx;
1506 TAILQ_FOREACH(pfx, &rai->rai_prefix, pfx_next) {
1513 ndopt_pi->nd_opt_pi_prefix_len = pfx->pfx_prefixlen;
1515 if (pfx->pfx_onlinkflg)
1518 if (pfx->pfx_autoconfflg)
1521 if (pfx->pfx_timer)
1524 if (pfx->pfx_vltimeexpire || pfx->pfx_pltimeexpire)
1526 if (pfx->pfx_vltimeexpire == 0)
1527 vltime = pfx->pfx_validlifetime;
1529 vltime = ((time_t)pfx->pfx_vltimeexpire > now.tv_sec) ?
1530 pfx->pfx_vltimeexpire - now.tv_sec : 0;
1532 if (pfx->pfx_timer)
1535 if (pfx->pfx_pltimeexpire == 0)
1536 pltime = pfx->pfx_preflifetime;
1538 pltime = ((time_t)pfx->pfx_pltimeexpire > now.tv_sec) ?
1539 pfx->pfx_pltimeexpire - now.tv_sec : 0;
1551 ndopt_pi->nd_opt_pi_prefix = pfx->pfx_prefix;