Lines Matching refs:tip

173 find_trill_link(trill_inst_t *tip, datalink_id_t linkid)
177 ASSERT(RW_LOCK_HELD(&tip->ti_rwlock));
178 for (tsp = list_head(&tip->ti_socklist); tsp != NULL;
179 tsp = list_next(&tip->ti_socklist, tsp)) {
195 trill_dest_fwd(trill_inst_t *tip, mblk_t *fwd_mp, uint16_t adj_nick,
205 adj = trill_node_lookup(tip, adj_nick);
244 rw_enter(&tip->ti_rwlock, RW_READER);
245 trillhdr->th_ingressnick = tip->ti_nick;
246 rw_exit(&tip->ti_rwlock);
266 trill_node_unref(tip, adj);
271 trill_node_unref(tip, adj);
283 trill_multidest_fwd(trill_inst_t *tip, mblk_t *mp, uint16_t egressnick,
296 if ((dest = trill_node_lookup(tip, egressnick)) == NULL)
306 ((adj = trill_node_lookup(tip, adjnick)) == NULL))
314 trill_node_unref(tip, adj);
322 trill_node_unref(tip, adj);
329 trill_node_unref(tip, adj);
348 trill_dest_fwd(tip, fwd_mp, adjnick, is_trill_pkt,
351 trill_node_unref(tip, dest);
357 trill_dest_fwd(tip, mp, adjnicksaved, is_trill_pkt,
384 trill_inst_t *tip = tsock->ts_tip;
418 rw_enter(&tip->ti_rwlock, RW_READER);
419 ournick = tip->ti_nick;
420 treeroot = tip->ti_treeroot;
421 rw_exit(&tip->ti_rwlock);
477 trill_dest_fwd(tip, mp, trillhdr->th_egressnick,
494 if ((dest = trill_node_lookup(tip, trillhdr->th_egressnick)) == NULL)
498 if ((adj = trill_node_lookup(tip, adjnick)) == NULL)
501 trill_node_unref(tip, adj);
504 trill_node_unref(tip, adj);
518 if ((source = trill_node_lookup(tip, trillhdr->th_ingressnick)) == NULL)
538 source, trill_inst_t *, tip);
550 trill_node_unref(tip, source);
551 trill_node_unref(tip, dest);
554 trill_multidest_fwd(tip, mp, trillhdr->th_egressnick,
571 trill_node_unref(tip, dest);
573 trill_node_unref(tip, source);
693 trill_instance_unref(trill_inst_t *tip)
696 rw_enter(&tip->ti_rwlock, RW_WRITER);
697 if (atomic_dec_uint_nv(&tip->ti_refs) == 0) {
698 list_remove(&trill_inst_list, tip);
699 rw_exit(&tip->ti_rwlock);
701 if (tip->ti_binst != NULL)
702 bridge_trill_brunref(tip->ti_binst);
703 list_destroy(&tip->ti_socklist);
704 rw_destroy(&tip->ti_rwlock);
705 kmem_free(tip, sizeof (*tip));
707 rw_exit(&tip->ti_rwlock);
788 trill_inst_t *tip = tsock->ts_tip;
799 rw_enter(&tip->ti_rwlock, RW_READER);
800 ournick = tip->ti_nick;
801 dtnick = tip->ti_treeroot;
802 rw_exit(&tip->ti_rwlock);
813 if ((self = trill_node_lookup(tip, ournick)) == NULL)
824 trill_node_unref(tip, self);
842 trill_multidest_fwd(tip, mp, dtnick,
845 trill_dest_fwd(tip, mp, egress_nick, B_FALSE, B_FALSE,
863 trill_inst_t *tip = bptr;
866 rw_enter(&tip->ti_rwlock, RW_WRITER);
867 if (tip->ti_binst != NULL)
868 bridge_trill_brunref(tip->ti_binst);
869 tip->ti_binst = NULL;
870 rw_exit(&tip->ti_rwlock);
995 trill_inst_t *tip, *newtip = NULL;
999 newtip = kmem_zalloc(sizeof (*tip), KM_NOSLEEP);
1002 for (tip = list_head(&trill_inst_list); tip != NULL;
1003 tip = list_next(&trill_inst_list, tip)) {
1004 if (strcmp(tip->ti_bridgename, bname) == 0)
1007 if (tip == NULL) {
1013 tip = newtip;
1015 (void) strcpy(tip->ti_bridgename, bname);
1018 tip->ti_binst = bridge_trill_brref(bname, tip);
1019 if (tip->ti_binst == NULL) {
1021 kmem_free(tip, sizeof (*tip));
1025 rw_init(&tip->ti_rwlock, NULL, RW_DRIVER, NULL);
1026 list_create(&tip->ti_socklist, sizeof (trill_sock_t),
1028 list_insert_tail(&trill_inst_list, tip);
1030 atomic_inc_uint(&tip->ti_refs);
1037 rw_enter(&tip->ti_rwlock, RW_WRITER);
1038 list_insert_tail(&(tip->ti_socklist), tsock);
1039 tsock->ts_tip = tip;
1040 rw_exit(&tip->ti_rwlock);
1047 trill_inst_t *tip;
1049 if ((tip = tsock->ts_tip) == NULL)
1051 rw_enter(&tip->ti_rwlock, RW_WRITER);
1052 list_remove(&tip->ti_socklist, tsock);
1053 if (list_is_empty(&tip->ti_socklist))
1054 trill_del_all(tip, B_TRUE);
1055 rw_exit(&tip->ti_rwlock);
1072 trill_inst_t *tip;
1074 tip = tsock->ts_tip;
1080 if (tip != NULL)
1081 trill_instance_unref(tip);
1085 trill_del_all(trill_inst_t *tip, boolean_t lockheld)
1090 rw_enter(&tip->ti_rwlock, RW_WRITER);
1092 if (tip->ti_nodes[i] != NULL)
1093 (void) trill_del_nick(tip, i, B_TRUE);
1096 rw_exit(&tip->ti_rwlock);
1110 trill_node_unref(trill_inst_t *tip, trill_node_t *tnp)
1116 atomic_dec_uint(&tip->ti_nodecount);
1121 trill_node_lookup(trill_inst_t *tip, uint16_t nick)
1127 rw_enter(&tip->ti_rwlock, RW_READER);
1128 nick_entry = tip->ti_nodes[nick];
1132 rw_exit(&tip->ti_rwlock);
1137 trill_del_nick(trill_inst_t *tip, uint16_t nick, boolean_t lockheld)
1143 rw_enter(&tip->ti_rwlock, RW_WRITER);
1145 nick_entry = tip->ti_nodes[nick];
1147 trill_node_unref(tip, nick_entry);
1148 tip->ti_nodes[nick] = NULL;
1153 rw_exit(&tip->ti_rwlock);
1158 trill_add_nick(trill_inst_t *tip, void *arg, boolean_t self, int mode)
1188 rw_enter(&tip->ti_rwlock, RW_WRITER);
1189 if (tip->ti_nodes[nick] != NULL)
1190 (void) trill_del_nick(tip, nick, B_TRUE);
1193 tip->ti_nick = nick;
1195 tnode->tn_tsp = find_trill_link(tip,
1200 tip->ti_nodes[nick] = tnode;
1201 tip->ti_nodecount++;
1202 rw_exit(&tip->ti_rwlock);
1210 trill_inst_t *tip = tsock->ts_tip;
1232 if (tip == NULL)
1234 error = trill_add_nick(tip, arg, B_TRUE, mode);
1238 if (tip == NULL)
1240 rw_enter(&tip->ti_rwlock, RW_READER);
1241 if (ddi_copyout(&tip->ti_nick, arg, sizeof (tip->ti_nick),
1244 rw_exit(&tip->ti_rwlock);
1248 if (tip == NULL)
1250 error = trill_add_nick(tip, arg, B_FALSE, mode);
1256 if (tip == NULL)
1260 error = trill_del_nick(tip, delnick, B_FALSE);
1264 if (tip == NULL)
1266 trill_del_all(tip, B_FALSE);
1272 if (tip == NULL)
1278 rw_enter(&tip->ti_rwlock, RW_WRITER);
1279 tip->ti_treeroot = treeroot;
1280 rw_exit(&tip->ti_rwlock);
1297 if (tip != NULL)
1310 if (tip != NULL)
1325 if (tip == NULL)
1334 rw_enter(&tip->ti_rwlock, RW_READER);
1336 if ((tnp = tip->ti_nodes[nick]) != NULL) {
1342 tln.tln_ours = nick == tip->ti_nick;
1353 rw_exit(&tip->ti_rwlock);