Lines Matching defs:kr6

530 	struct kroute6	*kr6;
540 if ((kr6 = kroute6_find(kt, &kf->prefix, kf->prefixlen,
545 memcpy(&kr6->nexthop, &kf->nexthop.v6, sizeof(struct in6_addr));
546 kr6->nexthop_scope_id = kf->nexthop.scope_id;
547 rtlabel_unref(kr6->labelid);
548 kr6->labelid = rtlabel_name2id(kf->label);
550 kr6->flags |= F_BLACKHOLE;
552 kr6->flags &= ~F_BLACKHOLE;
554 kr6->flags |= F_REJECT;
556 kr6->flags &= ~F_REJECT;
558 if (kr6->flags & F_NEXTHOP)
562 kr6->flags |= F_BGPD_INSERTED;
627 struct kroute6 *kr6;
653 if ((kr6 = kroute6_find(kt, &kf->prefix, kf->prefixlen,
658 kr6->mplslabel = mplslabel;
659 kr6->flags |= F_MPLS;
660 kr6->ifindex = kf->ifindex;
661 memcpy(&kr6->nexthop, &kf->nexthop.v6, sizeof(struct in6_addr));
662 kr6->nexthop_scope_id = kf->nexthop.scope_id;
663 rtlabel_unref(kr6->labelid);
664 kr6->labelid = rtlabel_name2id(kf->label);
666 kr6->flags |= F_BLACKHOLE;
668 kr6->flags &= ~F_BLACKHOLE;
670 kr6->flags |= F_REJECT;
672 kr6->flags &= ~F_REJECT;
675 kr6->flags |= F_BGPD_INSERTED;
699 struct kroute6 *kr6, *next6;
710 RB_FOREACH_SAFE(kr6, kroute6_tree, &kt->krt6, next6)
711 if ((kr6->flags & F_BGPD_INSERTED)) {
712 if (kroute_remove(kt, kr6_tofull(kr6), 1) == -1)
736 struct kroute6 *kr6;
751 RB_FOREACH(kr6, kroute6_tree, &kt->krt6)
752 if (kr6->flags & F_BGPD) {
753 if (send_rtmsg(RTM_ADD, kt, kr6_tofull(kr6)))
754 kr6->flags |= F_BGPD_INSERTED;
774 struct kroute6 *kr6;
787 RB_FOREACH(kr6, kroute6_tree, &kt->krt6)
788 if ((kr6->flags & F_BGPD_INSERTED)) {
789 if (send_rtmsg(RTM_DELETE, kt, kr6_tofull(kr6)))
790 kr6->flags &= ~F_BGPD_INSERTED;
893 struct kroute6 *kr6, *kn6;
932 RB_FOREACH(kr6, kroute6_tree, &kt->krt6) {
933 if (req.flags && (kr6->flags & req.flags) == 0)
935 kn6 = kr6;
967 kr6 = kroute6_match(kt, &addr, 1);
968 if (kr6 != NULL) {
969 kf = kr6_tofull(kr6);
997 kr6 = h->kroute;
998 snh.valid = kroute6_validate(kr6);
1000 snh.kr = *kr6_tofull(kr6);
1001 ifindex = kr6->ifindex;
1366 struct kroute6 *kr6;
1393 RB_FOREACH(kr6, kroute6_tree, &kt->krt6)
1395 kr6_tofull(kr6));
1432 kr6_tofull(struct kroute6 *kr6)
1439 kf.prefix.v6 = kr6->prefix;
1440 kf.prefix.scope_id = kr6->prefix_scope_id;
1442 kf.nexthop.v6 = kr6->nexthop;
1443 kf.nexthop.scope_id = kr6->nexthop_scope_id;
1444 strlcpy(kf.label, rtlabel_id2name(kr6->labelid), sizeof(kf.label));
1445 kf.flags = kr6->flags;
1446 kf.ifindex = kr6->ifindex;
1447 kf.prefixlen = kr6->prefixlen;
1448 kf.priority = kr6->priority;
1449 kf.mplslabel = kr6->mplslabel;
1645 struct kroute6 *kr6, *kr6m;
1699 if ((kr6 = calloc(1, sizeof(*kr6))) == NULL) {
1703 kr6->flags = kf->flags;
1704 kr6->prefix = kf->prefix.v6;
1705 kr6->prefix_scope_id = kf->prefix.scope_id;
1706 kr6->prefixlen = kf->prefixlen;
1708 kr6->nexthop = kf->nexthop.v6;
1709 kr6->nexthop_scope_id = kf->nexthop.scope_id;
1711 kr6->nexthop = in6addr_any;
1714 kr6->flags |= F_MPLS;
1715 kr6->mplslabel = htonl(mplslabel);
1718 kr6->ifindex = kf->ifindex;
1719 kr6->priority = kf->priority;
1720 kr6->labelid = rtlabel_name2id(kf->label);
1722 if ((kr6m = RB_INSERT(kroute6_tree, &kt->krt6, kr6)) != NULL) {
1726 kr6m->next = kr6;
1732 kr6->flags |= F_BGPD_INSERTED;
2179 struct kroute6 *kr6;
2209 kr6 = kn->kroute;
2210 if (kr6->flags & F_CONNECTED)
2213 gateway.v6 = kr6->nexthop;
2214 gateway.scope_id = kr6->nexthop_scope_id;
2227 struct kroute6 *kr6;
2254 kr6 = kroute6_match(kt, &kn->nexthop, 0);
2256 if (kr6 != NULL) {
2257 kn->kroute = kr6;
2258 kn->ifindex = kr6->ifindex;
2259 kr6->flags |= F_NEXTHOP;
2262 if (kr6 != oldk)
2300 struct kroute6 *kr6;
2327 kr6 = kn->kroute;
2328 n.valid = kroute6_validate(kr6);
2329 n.connected = kr6->flags & F_CONNECTED;
2332 n.gateway.v6 = kr6->nexthop;
2333 n.gateway.scope_id = kr6->nexthop_scope_id;
2337 n.net.v6 = kr6->prefix;
2338 n.net.scope_id = kr6->prefix_scope_id;
2339 n.netlen = kr6->prefixlen;
2367 struct kroute6 *kr6;
2372 if ((kr6 = kroute6_find(kt, &masked, i, RTP_ANY)) != NULL)
2373 if (matchany || bgpd_oknexthop(kr6_tofull(kr6)))
2374 return (kr6);
3166 struct kroute6 *kr6;
3239 if ((kr6 = kroute6_find(kt, &kf->prefix, kf->prefixlen,
3244 (kr6 = kroute6_matchgw(kr6, kf)) == NULL) {
3252 if (memcmp(&kr6->nexthop,
3255 kr6->nexthop_scope_id !=
3258 kr6->nexthop = kf->nexthop.v6;
3259 kr6->nexthop_scope_id =
3261 kr6->ifindex = kf->ifindex;
3263 if (memcmp(&kr6->nexthop,
3267 kr6->nexthop = in6addr_any;
3268 kr6->nexthop_scope_id = 0;
3269 kr6->ifindex = kf->ifindex;
3272 if (kr6->flags & F_NEXTHOP)
3276 if (kr6->labelid != new_labelid) {
3277 rtlabel_unref(kr6->labelid);
3278 kr6->labelid = new_labelid;
3282 oflags = kr6->flags;
3285 kr6->flags = flags;
3289 kt, kr6_tofull(kr6));
3294 kt, kr6_tofull(kr6));
3298 kt, kr6_tofull(kr6));
3300 if (kr6->flags & F_NEXTHOP && changed)
3303 kr6->flags &= ~F_BGPD_INSERTED;