Lines Matching +full:te +full:- +full:source

1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
7 * Redistribution and use in source and binary forms, with or without
10 * 1. Redistributions of source code must retain the above copyright
80 while (bif->f_tpa != NULL && bif->sysindex == bif->f_tpa->sysindex) { in bridge_tpe_bif_free()
81 tp = TAILQ_NEXT(bif->f_tpa, tp_e); in bridge_tpe_bif_free()
82 TAILQ_REMOVE(headp, bif->f_tpa, tp_e); in bridge_tpe_bif_free()
83 free(bif->f_tpa); in bridge_tpe_bif_free()
84 bif->f_tpa = tp; in bridge_tpe_bif_free()
90 * m1 < m2 : -1
101 return (-1); in bridge_compare_macs()
123 t1 != NULL && ta->sysindex == t1->sysindex; in bridge_addrs_insert_at()
125 if (bridge_compare_macs(ta->tp_addr, t1->tp_addr) < 0) { in bridge_addrs_insert_at()
150 bridge_compare_sysidx(b_idx, t1->sysindex) < 0) in bridge_addrs_find_pos()
153 t_idx = t1->sysindex; in bridge_addrs_find_pos()
157 if (t1->sysindex != t_idx) { in bridge_addrs_find_pos()
158 if (bridge_compare_sysidx(b_idx, t1->sysindex) < 0) in bridge_addrs_find_pos()
161 t_idx = t1->sysindex; in bridge_addrs_find_pos()
175 bridge_addrs_bif_insert(struct tp_entries *headp, struct tp_entry *te, in bridge_addrs_bif_insert() argument
181 bridge_addrs_insert_at(headp, te, f_tpa); in bridge_addrs_bif_insert()
183 temp = bridge_addrs_find_pos(headp, te->sysindex); in bridge_addrs_bif_insert()
186 TAILQ_INSERT_HEAD(headp, te, tp_e); in bridge_addrs_bif_insert()
188 TAILQ_INSERT_AFTER(headp, temp, te, tp_e); in bridge_addrs_bif_insert()
189 *f_tpa = te; in bridge_addrs_bif_insert()
227 bridge_addrs_next(struct tp_entry *te) in bridge_addrs_next() argument
229 return (TAILQ_NEXT(te, tp_e)); in bridge_addrs_next()
238 return (bif->f_tpa); in bridge_addrs_bif_first()
245 bridge_addrs_bif_next(struct tp_entry *te) in bridge_addrs_bif_next() argument
249 if ((te_next = TAILQ_NEXT(te, tp_e)) == NULL || in bridge_addrs_bif_next()
250 te_next->sysindex != te->sysindex) in bridge_addrs_bif_next()
260 bridge_addrs_remove(struct tp_entry *te, struct bridge_if *bif) in bridge_addrs_remove() argument
262 if (bif->f_tpa == te) in bridge_addrs_remove()
263 bif->f_tpa = bridge_addrs_bif_next(te); in bridge_addrs_remove()
265 TAILQ_REMOVE(&tp_entries, te, tp_e); in bridge_addrs_remove()
266 free(te); in bridge_addrs_remove()
275 struct tp_entry *te; in bridge_new_addrs() local
277 if ((te = (struct tp_entry *) malloc(sizeof(*te))) == NULL) { in bridge_new_addrs()
283 bzero(te, sizeof(*te)); in bridge_new_addrs()
285 te->sysindex = bif->sysindex; in bridge_new_addrs()
286 bcopy(mac, te->tp_addr, ETHER_ADDR_LEN); in bridge_new_addrs()
287 bridge_addrs_bif_insert(&tp_entries, te, &(bif->f_tpa)); in bridge_new_addrs()
289 return (te); in bridge_new_addrs()
299 struct tp_entry *te; in bridge_addrs_find() local
301 for (te = bif->f_tpa; te != NULL; te = TAILQ_NEXT(te, tp_e)) { in bridge_addrs_find()
302 if (te->sysindex != bif->sysindex) { in bridge_addrs_find()
303 te = NULL; in bridge_addrs_find()
307 if (bridge_compare_macs(te->tp_addr, mac) == 0) in bridge_addrs_find()
311 return (te); in bridge_addrs_find()
317 struct tp_entry *te; in bridge_addrs_dump() local
319 syslog(LOG_ERR, "Addresses count - %d", bif->num_addrs); in bridge_addrs_dump()
320 for (te = bridge_addrs_bif_first(bif); te != NULL; in bridge_addrs_dump()
321 te = bridge_addrs_bif_next(te)) { in bridge_addrs_dump()
323 te->tp_addr[0], te->tp_addr[1], te->tp_addr[2], in bridge_addrs_dump()
324 te->tp_addr[3], te->tp_addr[4], te->tp_addr[5], in bridge_addrs_dump()
325 te->sysindex, te->port_no); in bridge_addrs_dump()
338 const struct tp_entry *te) in bridge_addrs_index_append() argument
342 oid->len = sub + ETHER_ADDR_LEN + 1; in bridge_addrs_index_append()
343 oid->subs[sub] = ETHER_ADDR_LEN; in bridge_addrs_index_append()
346 oid->subs[sub + i] = te->tp_addr[i - 1]; in bridge_addrs_index_append()
359 if (oid->len - sub != ETHER_ADDR_LEN + 1 || in bridge_addrs_get()
360 oid->subs[sub] != ETHER_ADDR_LEN) in bridge_addrs_get()
364 tp_addr[i] = oid->subs[sub + i + 1]; in bridge_addrs_get()
379 static struct tp_entry *te; in bridge_addrs_getnext() local
381 if (oid->len - sub == 0) in bridge_addrs_getnext()
384 if (oid->len - sub != ETHER_ADDR_LEN + 1 || in bridge_addrs_getnext()
385 oid->subs[sub] != ETHER_ADDR_LEN) in bridge_addrs_getnext()
389 tp_addr[i] = oid->subs[sub + i + 1]; in bridge_addrs_getnext()
391 if ((te = bridge_addrs_find(tp_addr, bif)) == NULL) in bridge_addrs_getnext()
394 return (bridge_addrs_bif_next(te)); in bridge_addrs_getnext()
402 struct tp_entry *te; in op_dot1d_tp_fdb() local
407 if (time(NULL) - bif->addrs_age > bridge_get_data_maxage() && in op_dot1d_tp_fdb()
413 if ((te = bridge_addrs_get(&val->var, sub, bif)) == NULL) in op_dot1d_tp_fdb()
418 if ((te = bridge_addrs_getnext(&val->var, sub, bif)) == NULL) in op_dot1d_tp_fdb()
420 bridge_addrs_index_append(&val->var, sub, te); in op_dot1d_tp_fdb()
433 switch (val->var.subs[sub - 1]) { in op_dot1d_tp_fdb()
435 return (string_get(val, te->tp_addr, ETHER_ADDR_LEN)); in op_dot1d_tp_fdb()
437 val->v.integer = te->port_no; in op_dot1d_tp_fdb()
440 val->v.integer = te->status; in op_dot1d_tp_fdb()
448 * Private BEGEMOT-BRIDGE-MIB specifics.
457 const struct tp_entry *te) in bridge_addrs_begemot_index_append() argument
462 if ((b_name = bridge_if_find_name(te->sysindex)) == NULL) in bridge_addrs_begemot_index_append()
463 return (-1); in bridge_addrs_begemot_index_append()
466 oid->len = sub++; in bridge_addrs_begemot_index_append()
467 oid->subs[oid->len++] = n_len; in bridge_addrs_begemot_index_append()
470 oid->subs[oid->len++] = b_name[i - 1]; in bridge_addrs_begemot_index_append()
472 oid->subs[oid->len++] = ETHER_ADDR_LEN; in bridge_addrs_begemot_index_append()
474 oid->subs[oid->len++] = te->tp_addr[i - 1]; in bridge_addrs_begemot_index_append()
491 n_len = oid->subs[sub]; in bridge_addrs_begemot_get()
492 if (oid->len - sub != n_len + ETHER_ADDR_LEN + 3 || in bridge_addrs_begemot_get()
493 n_len >= IFNAMSIZ || oid->subs[sub + n_len + 1] != ETHER_ADDR_LEN) in bridge_addrs_begemot_get()
497 bif_name[i] = oid->subs[n_len + i + 1]; in bridge_addrs_begemot_get()
501 tp_addr[i - 1] = oid->subs[n_len + i + 1]; in bridge_addrs_begemot_get()
522 if (oid->len - sub == 0) in bridge_addrs_begemot_getnext()
525 n_len = oid->subs[sub]; in bridge_addrs_begemot_getnext()
526 if (oid->len - sub != n_len + ETHER_ADDR_LEN + 2 || in bridge_addrs_begemot_getnext()
527 n_len >= IFNAMSIZ || oid->subs[sub + n_len + 1] != ETHER_ADDR_LEN) in bridge_addrs_begemot_getnext()
531 bif_name[i - 1] = oid->subs[sub + i]; in bridge_addrs_begemot_getnext()
533 bif_name[i - 1] = '\0'; in bridge_addrs_begemot_getnext()
536 tp_addr[i - 1] = oid->subs[sub + n_len + i + 1]; in bridge_addrs_begemot_getnext()
549 struct tp_entry *te; in op_begemot_tp_fdb() local
551 if (time(NULL) - address_list_age > bridge_get_data_maxage()) in op_begemot_tp_fdb()
556 if ((te = bridge_addrs_begemot_get(&val->var, sub)) == NULL) in op_begemot_tp_fdb()
561 if ((te = bridge_addrs_begemot_getnext(&val->var, in op_begemot_tp_fdb()
563 bridge_addrs_begemot_index_append(&val->var, in op_begemot_tp_fdb()
564 sub, te) < 0) in op_begemot_tp_fdb()
578 switch (val->var.subs[sub - 1]) { in op_begemot_tp_fdb()
580 return (string_get(val, te->tp_addr, ETHER_ADDR_LEN)); in op_begemot_tp_fdb()
582 val->v.integer = te->port_no; in op_begemot_tp_fdb()
585 val->v.integer = te->status; in op_begemot_tp_fdb()