Lines Matching defs:pfx

282 	struct prefix *pfx;
299 while ((pfx = TAILQ_FIRST(&rai->rai_prefix)) != NULL)
300 delete_prefix(pfx);
496 struct prefix *pfx;
504 ELM_MALLOC(pfx, exit(1));
505 pfx->pfx_rainfo = rai;
506 pfx->pfx_origin = PREFIX_FROM_CONFIG;
508 if (inet_pton(AF_INET6, addr, &pfx->pfx_prefix) != 1) {
514 if (IN6_IS_ADDR_MULTICAST(&pfx->pfx_prefix)) {
521 if (IN6_IS_ADDR_LINKLOCAL(&pfx->pfx_prefix))
535 pfx->pfx_prefixlen = (int)val;
548 pfx->pfx_onlinkflg = val & ND_OPT_PI_FLAG_ONLINK;
549 pfx->pfx_autoconfflg = val & ND_OPT_PI_FLAG_AUTO;
557 addr, pfx->pfx_prefixlen, ifi->ifi_ifname);
560 pfx->pfx_validlifetime = (uint32_t)val64;
567 pfx->pfx_vltimeexpire =
568 now.tv_sec + pfx->pfx_validlifetime;
578 addr, pfx->pfx_prefixlen, ifi->ifi_ifname);
581 pfx->pfx_preflifetime = (uint32_t)val64;
588 pfx->pfx_pltimeexpire =
589 now.tv_sec + pfx->pfx_preflifetime;
592 TAILQ_INSERT_TAIL(&rai->rai_prefix, pfx, pfx_next);
596 free(pfx);
1012 struct prefix *pfx;
1055 ELM_MALLOC(pfx, exit(1));
1058 pfx->pfx_prefixlen = plen;
1059 memcpy(&pfx->pfx_prefix, a, sizeof(*a));
1060 p = (char *)&pfx->pfx_prefix;
1061 ep = (char *)(&pfx->pfx_prefix + 1);
1066 if (!inet_ntop(AF_INET6, &pfx->pfx_prefix, ntopbuf,
1073 __func__, ntopbuf, pfx->pfx_prefixlen, ifi->ifi_ifname);
1076 pfx->pfx_validlifetime = DEF_ADVVALIDLIFETIME;
1077 pfx->pfx_preflifetime = DEF_ADVPREFERREDLIFETIME;
1078 pfx->pfx_onlinkflg = 1;
1079 pfx->pfx_autoconfflg = 1;
1080 pfx->pfx_origin = PREFIX_FROM_KERNEL;
1081 pfx->pfx_rainfo = rai;
1084 TAILQ_INSERT_TAIL(&rai->rai_prefix, pfx, pfx_next);
1113 struct prefix *pfx;
1118 ELM_MALLOC(pfx, return);
1119 pfx->pfx_prefix = ipr->ipr_prefix.sin6_addr;
1120 pfx->pfx_prefixlen = ipr->ipr_plen;
1121 pfx->pfx_validlifetime = ipr->ipr_vltime;
1122 pfx->pfx_preflifetime = ipr->ipr_pltime;
1123 pfx->pfx_onlinkflg = ipr->ipr_raf_onlink;
1124 pfx->pfx_autoconfflg = ipr->ipr_raf_auto;
1125 pfx->pfx_origin = PREFIX_FROM_DYNAMIC;
1126 pfx->pfx_rainfo = rai;
1128 TAILQ_INSERT_TAIL(&rai->rai_prefix, pfx, pfx_next);
1144 delete_prefix(struct prefix *pfx)
1150 rai = pfx->pfx_rainfo;
1152 TAILQ_REMOVE(&rai->rai_prefix, pfx, pfx_next);
1155 inet_ntop(AF_INET6, &pfx->pfx_prefix, ntopbuf,
1156 sizeof(ntopbuf)), pfx->pfx_prefixlen, ifi->ifi_ifname);
1157 if (pfx->pfx_timer)
1158 rtadvd_remove_timer(pfx->pfx_timer);
1159 free(pfx);
1165 invalidate_prefix(struct prefix *pfx)
1172 rai = pfx->pfx_rainfo;
1174 if (pfx->pfx_timer) { /* sanity check */
1183 inet_ntop(AF_INET6, &pfx->pfx_prefix, ntopbuf, sizeof(ntopbuf)),
1184 pfx->pfx_prefixlen, ifi->ifi_ifname, (long)prefix_timo);
1187 pfx->pfx_timer = rtadvd_add_timer(prefix_timeout, NULL, pfx, NULL);
1188 if (pfx->pfx_timer == NULL) {
1191 delete_prefix(pfx);
1195 rtadvd_set_timer(&timo, pfx->pfx_timer);
1208 update_prefix(struct prefix *pfx)
1214 rai = pfx->pfx_rainfo;
1216 if (pfx->pfx_timer == NULL) { /* sanity check */
1224 __func__, inet_ntop(AF_INET6, &pfx->pfx_prefix, ntopbuf,
1225 sizeof(ntopbuf)), pfx->pfx_prefixlen, ifi->ifi_ifname);
1228 rtadvd_remove_timer(pfx->pfx_timer);
1229 pfx->pfx_timer = NULL;
1319 struct prefix *pfx;
1416 TAILQ_FOREACH(pfx, &rai->rai_prefix, pfx_next) {
1423 ndopt_pi->nd_opt_pi_prefix_len = pfx->pfx_prefixlen;
1425 if (pfx->pfx_onlinkflg)
1428 if (pfx->pfx_autoconfflg)
1431 if (pfx->pfx_timer)
1434 if (pfx->pfx_vltimeexpire || pfx->pfx_pltimeexpire)
1436 if (pfx->pfx_vltimeexpire == 0)
1437 vltime = pfx->pfx_validlifetime;
1439 vltime = ((time_t)pfx->pfx_vltimeexpire > now.tv_sec) ?
1440 pfx->pfx_vltimeexpire - now.tv_sec : 0;
1442 if (pfx->pfx_timer)
1445 if (pfx->pfx_pltimeexpire == 0)
1446 pltime = pfx->pfx_preflifetime;
1448 pltime = ((time_t)pfx->pfx_pltimeexpire > now.tv_sec) ?
1449 pfx->pfx_pltimeexpire - now.tv_sec : 0;
1461 ndopt_pi->nd_opt_pi_prefix = pfx->pfx_prefix;