Lines Matching defs:ln
195 struct lde_nbr *ln;
225 ln = lde_nbr_find(imsg.hdr.peerid);
226 if (ln == NULL) {
232 fec_snap(ln);
243 ln = lde_nbr_find(imsg.hdr.peerid);
244 if (ln == NULL) {
252 lde_check_mapping(&map, ln);
255 lde_check_request(&map, ln);
258 lde_check_release(&map, ln);
261 lde_check_withdraw(&map, ln);
273 ln = lde_nbr_find(imsg.hdr.peerid);
274 if (ln == NULL) {
279 if (lde_address_add(ln, &lde_addr) < 0) {
290 ln = lde_nbr_find(imsg.hdr.peerid);
291 if (ln == NULL) {
296 if (lde_address_del(ln, &lde_addr) < 0) {
307 ln = lde_nbr_find(imsg.hdr.peerid);
308 if (ln == NULL) {
316 l2vpn_recv_pw_status(ln, &nm);
773 lde_send_labelmapping(struct lde_nbr *ln, struct fec_node *fn, int single)
789 if (!ln->v4_enabled)
793 if (!ln->v6_enabled)
798 if (pw == NULL || pw->lsr_id.s_addr != ln->id.s_addr)
816 lre = (struct lde_req *)fec_find(&ln->recv_req, &fn->fec);
823 lde_req_del(ln, lre, 0);
827 lde_imsg_compose_ldpe(IMSG_MAPPING_ADD, ln->peerid, 0,
830 lde_imsg_compose_ldpe(IMSG_MAPPING_ADD_END, ln->peerid, 0,
834 me = (struct lde_map *)fec_find(&ln->sent_map, &fn->fec);
836 me = lde_map_add(ln, fn, 1);
841 lde_send_labelwithdraw(struct lde_nbr *ln, struct fec_node *fn,
853 if (!ln->v4_enabled)
857 if (!ln->v6_enabled)
862 if (pw == NULL || pw->lsr_id.s_addr != ln->id.s_addr)
882 lde_imsg_compose_ldpe(IMSG_WITHDRAW_ADD, ln->peerid, 0,
884 lde_imsg_compose_ldpe(IMSG_WITHDRAW_ADD_END, ln->peerid, 0, NULL, 0);
888 lw = (struct lde_wdraw *)fec_find(&ln->sent_wdraw, &fn->fec);
890 lw = lde_wdraw_add(ln, fn);
897 me = (struct lde_map *)fec_find(&ln->sent_map, &fn->fec);
901 lw = (struct lde_wdraw *)fec_find(&ln->sent_wdraw,
904 lw = lde_wdraw_add(ln, fn);
911 lde_send_labelwithdraw_wcard(struct lde_nbr *ln, uint32_t label)
918 lde_send_labelwithdraw(ln, NULL, &wcard, NULL);
922 lde_send_labelwithdraw_twcard_prefix(struct lde_nbr *ln, uint16_t af,
932 lde_send_labelwithdraw(ln, NULL, &wcard, NULL);
936 lde_send_labelwithdraw_twcard_pwid(struct lde_nbr *ln, uint16_t pw_type,
946 lde_send_labelwithdraw(ln, NULL, &wcard, NULL);
950 lde_send_labelwithdraw_pwid_wcard(struct lde_nbr *ln, uint16_t pw_type,
961 lde_send_labelwithdraw(ln, NULL, &wcard, NULL);
965 lde_send_labelrelease(struct lde_nbr *ln, struct fec_node *fn,
975 if (!ln->v4_enabled)
979 if (!ln->v6_enabled)
984 if (pw == NULL || pw->lsr_id.s_addr != ln->id.s_addr)
996 lde_imsg_compose_ldpe(IMSG_RELEASE_ADD, ln->peerid, 0,
998 lde_imsg_compose_ldpe(IMSG_RELEASE_ADD_END, ln->peerid, 0, NULL, 0);
1002 lde_send_notification(struct lde_nbr *ln, uint32_t status_code, uint32_t msg_id,
1013 lde_imsg_compose_ldpe(IMSG_NOTIFICATION_SEND, ln->peerid, 0,
1018 lde_send_notification_eol_prefix(struct lde_nbr *ln, int af)
1029 lde_imsg_compose_ldpe(IMSG_NOTIFICATION_SEND, ln->peerid, 0,
1034 lde_send_notification_eol_pwid(struct lde_nbr *ln, uint16_t pw_type)
1045 lde_imsg_compose_ldpe(IMSG_NOTIFICATION_SEND, ln->peerid, 0,
1058 struct lde_nbr *ln;
1060 if ((ln = calloc(1, sizeof(*ln))) == NULL)
1063 ln->id = new->id;
1064 ln->v4_enabled = new->v4_enabled;
1065 ln->v6_enabled = new->v6_enabled;
1066 ln->flags = new->flags;
1067 ln->peerid = peerid;
1068 fec_init(&ln->recv_map);
1069 fec_init(&ln->sent_map);
1070 fec_init(&ln->recv_req);
1071 fec_init(&ln->sent_req);
1072 fec_init(&ln->sent_wdraw);
1074 TAILQ_INIT(&ln->addr_list);
1076 if (RB_INSERT(nbr_tree, &lde_nbrs, ln) != NULL)
1079 return (ln);
1083 lde_nbr_del(struct lde_nbr *ln)
1090 if (ln == NULL)
1101 if (!lde_address_find(ln, fnh->af,
1106 if (f->u.pwid.lsr_id.s_addr != ln->id.s_addr)
1121 lde_address_list_free(ln);
1123 fec_clear(&ln->recv_map, lde_map_free);
1124 fec_clear(&ln->sent_map, lde_map_free);
1125 fec_clear(&ln->recv_req, free);
1126 fec_clear(&ln->sent_req, free);
1127 fec_clear(&ln->sent_wdraw, free);
1129 RB_REMOVE(nbr_tree, &lde_nbrs, ln);
1131 free(ln);
1137 struct lde_nbr ln;
1139 ln.peerid = peerid;
1141 return (RB_FIND(nbr_tree, &lde_nbrs, &ln));
1147 struct lde_nbr *ln;
1149 RB_FOREACH(ln, nbr_tree, &lde_nbrs)
1150 if (ln->id.s_addr == addr.s_addr)
1151 return (ln);
1159 struct lde_nbr *ln;
1161 RB_FOREACH(ln, nbr_tree, &lde_nbrs)
1162 if (lde_address_find(ln, af, addr) != NULL)
1163 return (ln);
1171 struct lde_nbr *ln;
1173 while ((ln = RB_ROOT(&lde_nbrs)) != NULL)
1174 lde_nbr_del(ln);
1178 lde_nbr_addr_update(struct lde_nbr *ln, struct lde_addr *lde_addr, int removed)
1185 RB_FOREACH(fec, fec_tree, &ln->recv_map) {
1219 lde_map_add(struct lde_nbr *ln, struct fec_node *fn, int sent)
1228 me->nexthop = ln;
1232 if (fec_insert(&ln->sent_map, &me->fec))
1238 if (fec_insert(&ln->recv_map, &me->fec))
1247 lde_map_del(struct lde_nbr *ln, struct lde_map *me, int sent)
1250 fec_remove(&ln->sent_map, &me->fec);
1252 fec_remove(&ln->recv_map, &me->fec);
1267 lde_req_add(struct lde_nbr *ln, struct fec *fec, int sent)
1272 t = sent ? &ln->sent_req : &ln->recv_req;
1290 lde_req_del(struct lde_nbr *ln, struct lde_req *lre, int sent)
1293 fec_remove(&ln->sent_req, &lre->fec);
1295 fec_remove(&ln->recv_req, &lre->fec);
1301 lde_wdraw_add(struct lde_nbr *ln, struct fec_node *fn)
1311 if (fec_insert(&ln->sent_wdraw, &lw->fec))
1319 lde_wdraw_del(struct lde_nbr *ln, struct lde_wdraw *lw)
1321 fec_remove(&ln->sent_wdraw, &lw->fec);
1328 struct lde_nbr *ln;
1332 RB_FOREACH(ln, nbr_tree, &lde_nbrs) {
1335 lde_send_labelwithdraw_wcard(ln, MPLS_LABEL_IMPLNULL);
1337 if (ln->v4_enabled)
1338 lde_send_labelwithdraw_wcard(ln,
1340 if (ln->v6_enabled)
1341 lde_send_labelwithdraw_wcard(ln,
1365 lde_send_labelmapping(ln, fn, 0);
1368 lde_imsg_compose_ldpe(IMSG_MAPPING_ADD_END, ln->peerid, 0,
1374 lde_address_add(struct lde_nbr *ln, struct lde_addr *lde_addr)
1378 if (lde_address_find(ln, lde_addr->af, &lde_addr->addr) != NULL)
1386 TAILQ_INSERT_TAIL(&ln->addr_list, new, entry);
1389 lde_nbr_addr_update(ln, lde_addr, 0);
1395 lde_address_del(struct lde_nbr *ln, struct lde_addr *lde_addr)
1397 lde_addr = lde_address_find(ln, lde_addr->af, &lde_addr->addr);
1402 lde_nbr_addr_update(ln, lde_addr, 1);
1404 TAILQ_REMOVE(&ln->addr_list, lde_addr, entry);
1411 lde_address_find(struct lde_nbr *ln, int af, union ldpd_addr *addr)
1415 TAILQ_FOREACH(lde_addr, &ln->addr_list, entry)
1424 lde_address_list_free(struct lde_nbr *ln)
1428 while ((lde_addr = TAILQ_FIRST(&ln->addr_list)) != NULL) {
1429 TAILQ_REMOVE(&ln->addr_list, lde_addr, entry);