| 958 | } |
| 959 | |
| 960 | static int |
| 961 | pfr_route_kentry(struct pfr_ktable *kt, struct pfr_kentry *ke) |
| 962 | { |
| 963 | union sockaddr_union mask; |
| 964 | struct radix_node *rn; |
| 965 | struct radix_head *head = NULL; |
| 966 | |
| 967 | PF_RULES_WASSERT(); |
| 968 | |
| 969 | bzero(ke->pfrke_node, sizeof(ke->pfrke_node)); |
| 970 | if (ke->pfrke_af == AF_INET) |
| 971 | head = &kt->pfrkt_ip4->rh; |
| 972 | else if (ke->pfrke_af == AF_INET6) |
| 973 | head = &kt->pfrkt_ip6->rh; |
| 974 | |
| 975 | if (KENTRY_NETWORK(ke)) { |
| 976 | pfr_prepare_network(&mask, ke->pfrke_af, ke->pfrke_net); |
| 977 | rn = rn_addroute(&ke->pfrke_sa, &mask, head, ke->pfrke_node); |
| 978 | } else |
| 979 | rn = rn_addroute(&ke->pfrke_sa, NULL, head, ke->pfrke_node); |
| 980 | |
| 981 | return (rn == NULL ? -1 : 0); |
| 982 | } |
| 983 | |
| 984 | static int |
| 985 | pfr_unroute_kentry(struct pfr_ktable *kt, struct pfr_kentry *ke) |
no test coverage detected