Lines Matching refs:pfx

288 	struct prefix *pfx;
305 while ((pfx = TAILQ_FIRST(&rai->rai_prefix)) != NULL)
306 delete_prefix(pfx);
502 struct prefix *pfx;
510 ELM_MALLOC(pfx, exit(1));
511 pfx->pfx_rainfo = rai;
512 pfx->pfx_origin = PREFIX_FROM_CONFIG;
514 if (inet_pton(AF_INET6, addr, &pfx->pfx_prefix) != 1) {
520 if (IN6_IS_ADDR_MULTICAST(&pfx->pfx_prefix)) {
527 if (IN6_IS_ADDR_LINKLOCAL(&pfx->pfx_prefix))
541 pfx->pfx_prefixlen = (int)val;
554 pfx->pfx_onlinkflg = val & ND_OPT_PI_FLAG_ONLINK;
555 pfx->pfx_autoconfflg = val & ND_OPT_PI_FLAG_AUTO;
563 addr, pfx->pfx_prefixlen, ifi->ifi_ifname);
566 pfx->pfx_validlifetime = (uint32_t)val64;
573 pfx->pfx_vltimeexpire =
574 now.tv_sec + pfx->pfx_validlifetime;
584 addr, pfx->pfx_prefixlen, ifi->ifi_ifname);
587 pfx->pfx_preflifetime = (uint32_t)val64;
594 pfx->pfx_pltimeexpire =
595 now.tv_sec + pfx->pfx_preflifetime;
598 TAILQ_INSERT_TAIL(&rai->rai_prefix, pfx, pfx_next);
602 free(pfx);
1023 struct prefix *pfx;
1066 ELM_MALLOC(pfx, exit(1));
1069 pfx->pfx_prefixlen = plen;
1070 memcpy(&pfx->pfx_prefix, a, sizeof(*a));
1071 p = (char *)&pfx->pfx_prefix;
1072 ep = (char *)(&pfx->pfx_prefix + 1);
1077 if (!inet_ntop(AF_INET6, &pfx->pfx_prefix, ntopbuf,
1084 __func__, ntopbuf, pfx->pfx_prefixlen, ifi->ifi_ifname);
1087 pfx->pfx_validlifetime = DEF_ADVVALIDLIFETIME;
1088 pfx->pfx_preflifetime = DEF_ADVPREFERREDLIFETIME;
1089 pfx->pfx_onlinkflg = 1;
1090 pfx->pfx_autoconfflg = 1;
1091 pfx->pfx_origin = PREFIX_FROM_KERNEL;
1092 pfx->pfx_rainfo = rai;
1095 TAILQ_INSERT_TAIL(&rai->rai_prefix, pfx, pfx_next);
1124 struct prefix *pfx;
1129 ELM_MALLOC(pfx, return);
1130 pfx->pfx_prefix = ipr->ipr_prefix.sin6_addr;
1131 pfx->pfx_prefixlen = ipr->ipr_plen;
1132 pfx->pfx_validlifetime = ipr->ipr_vltime;
1133 pfx->pfx_preflifetime = ipr->ipr_pltime;
1134 pfx->pfx_onlinkflg = ipr->ipr_raf_onlink;
1135 pfx->pfx_autoconfflg = ipr->ipr_raf_auto;
1136 pfx->pfx_origin = PREFIX_FROM_DYNAMIC;
1137 pfx->pfx_rainfo = rai;
1139 TAILQ_INSERT_TAIL(&rai->rai_prefix, pfx, pfx_next);
1155 delete_prefix(struct prefix *pfx)
1161 rai = pfx->pfx_rainfo;
1163 TAILQ_REMOVE(&rai->rai_prefix, pfx, pfx_next);
1166 inet_ntop(AF_INET6, &pfx->pfx_prefix, ntopbuf,
1167 sizeof(ntopbuf)), pfx->pfx_prefixlen, ifi->ifi_ifname);
1168 if (pfx->pfx_timer)
1169 rtadvd_remove_timer(pfx->pfx_timer);
1170 free(pfx);
1176 invalidate_prefix(struct prefix *pfx)
1183 rai = pfx->pfx_rainfo;
1185 if (pfx->pfx_timer) { /* sanity check */
1194 inet_ntop(AF_INET6, &pfx->pfx_prefix, ntopbuf, sizeof(ntopbuf)),
1195 pfx->pfx_prefixlen, ifi->ifi_ifname, (long)prefix_timo);
1198 pfx->pfx_timer = rtadvd_add_timer(prefix_timeout, NULL, pfx, NULL);
1199 if (pfx->pfx_timer == NULL) {
1202 delete_prefix(pfx);
1206 rtadvd_set_timer(&timo, pfx->pfx_timer);
1219 update_prefix(struct prefix *pfx)
1225 rai = pfx->pfx_rainfo;
1227 if (pfx->pfx_timer == NULL) { /* sanity check */
1235 __func__, inet_ntop(AF_INET6, &pfx->pfx_prefix, ntopbuf,
1236 sizeof(ntopbuf)), pfx->pfx_prefixlen, ifi->ifi_ifname);
1239 rtadvd_remove_timer(pfx->pfx_timer);
1240 pfx->pfx_timer = NULL;
1330 struct prefix *pfx;
1427 TAILQ_FOREACH(pfx, &rai->rai_prefix, pfx_next) {
1434 ndopt_pi->nd_opt_pi_prefix_len = pfx->pfx_prefixlen;
1436 if (pfx->pfx_onlinkflg)
1439 if (pfx->pfx_autoconfflg)
1442 if (pfx->pfx_timer)
1445 if (pfx->pfx_vltimeexpire || pfx->pfx_pltimeexpire)
1447 if (pfx->pfx_vltimeexpire == 0)
1448 vltime = pfx->pfx_validlifetime;
1450 vltime = ((time_t)pfx->pfx_vltimeexpire > now.tv_sec) ?
1451 pfx->pfx_vltimeexpire - now.tv_sec : 0;
1453 if (pfx->pfx_timer)
1456 if (pfx->pfx_pltimeexpire == 0)
1457 pltime = pfx->pfx_preflifetime;
1459 pltime = ((time_t)pfx->pfx_pltimeexpire > now.tv_sec) ?
1460 pfx->pfx_pltimeexpire - now.tv_sec : 0;
1472 ndopt_pi->nd_opt_pi_prefix = pfx->pfx_prefix;