Lines Matching refs:ipst

90 ip6_asp_init(ip_stack_t *ipst)
93 mutex_init(&ipst->ips_ip6_asp_lock, NULL, MUTEX_DEFAULT, NULL);
95 ipst->ips_ip6_asp_table = default_ip6_asp_table;
97 ipst->ips_ip6_asp_table_count =
102 ip6_asp_free(ip_stack_t *ipst)
104 if (ipst->ips_ip6_asp_table != default_ip6_asp_table) {
105 kmem_free(ipst->ips_ip6_asp_table,
106 ipst->ips_ip6_asp_table_count * sizeof (ip6_asp_t));
107 ipst->ips_ip6_asp_table = NULL;
109 mutex_destroy(&ipst->ips_ip6_asp_lock);
117 ip6_asp_can_lookup(ip_stack_t *ipst)
119 mutex_enter(&ipst->ips_ip6_asp_lock);
120 if (ipst->ips_ip6_asp_uip) {
121 mutex_exit(&ipst->ips_ip6_asp_lock);
124 IP6_ASP_TABLE_REFHOLD(ipst);
125 mutex_exit(&ipst->ips_ip6_asp_lock);
134 ip_stack_t *ipst = connp->conn_netstack->netstack_ip;
142 mutex_enter(&ipst->ips_ip6_asp_lock);
143 if (ipst->ips_ip6_asp_pending_ops == NULL) {
144 ASSERT(ipst->ips_ip6_asp_pending_ops_tail == NULL);
145 ipst->ips_ip6_asp_pending_ops =
146 ipst->ips_ip6_asp_pending_ops_tail = mp;
148 ipst->ips_ip6_asp_pending_ops_tail->b_next = mp;
149 ipst->ips_ip6_asp_pending_ops_tail = mp;
151 mutex_exit(&ipst->ips_ip6_asp_lock);
155 ip6_asp_complete_op(ip_stack_t *ipst)
161 mutex_enter(&ipst->ips_ip6_asp_lock);
162 while (ipst->ips_ip6_asp_pending_ops != NULL) {
163 mp = ipst->ips_ip6_asp_pending_ops;
164 ipst->ips_ip6_asp_pending_ops = mp->b_next;
166 if (ipst->ips_ip6_asp_pending_ops == NULL)
167 ipst->ips_ip6_asp_pending_ops_tail = NULL;
168 mutex_exit(&ipst->ips_ip6_asp_lock);
178 mutex_enter(&ipst->ips_ip6_asp_lock);
180 mutex_exit(&ipst->ips_ip6_asp_lock);
188 ip6_asp_table_refrele(ip_stack_t *ipst)
190 IP6_ASP_TABLE_REFRELE(ipst);
205 ip6_asp_lookup(const in6_addr_t *addr, uint32_t *precedence, ip_stack_t *ipst)
211 aspp = ipst->ips_ip6_asp_table;
213 default_policy = aspp + ipst->ips_ip6_asp_table_count - 1;
238 ip6_asp_check_for_updates(ip_stack_t *ipst)
245 mutex_enter(&ipst->ips_ip6_asp_lock);
246 if (ipst->ips_ip6_asp_pending_update == NULL ||
247 ipst->ips_ip6_asp_refcnt > 0) {
248 mutex_exit(&ipst->ips_ip6_asp_lock);
252 mp = ipst->ips_ip6_asp_pending_update;
253 ipst->ips_ip6_asp_pending_update = NULL;
256 ipst->ips_ip6_asp_uip = B_TRUE;
268 ip6_asp_replace(mp, table, table_size, B_TRUE, ipst,
282 boolean_t locked, ip_stack_t *ipst, model_t datamodel)
307 mutex_enter(&ipst->ips_ip6_asp_lock);
312 if (!locked && ipst->ips_ip6_asp_refcnt > 0) {
314 if (ipst->ips_ip6_asp_pending_update == NULL) {
315 ipst->ips_ip6_asp_pending_update = mp;
319 mutex_exit(&ipst->ips_ip6_asp_lock);
323 mutex_exit(&ipst->ips_ip6_asp_lock);
329 ipst->ips_ip6_asp_uip = B_TRUE;
331 ASSERT(ipst->ips_ip6_asp_refcnt == 0);
338 if (ipst->ips_ip6_asp_table == default_ip6_asp_table)
341 kmem_free(ipst->ips_ip6_asp_table,
342 ipst->ips_ip6_asp_table_count * sizeof (ip6_asp_t));
343 ipst->ips_ip6_asp_table = default_ip6_asp_table;
344 ipst->ips_ip6_asp_table_count =
410 if (ipst->ips_ip6_asp_table != default_ip6_asp_table) {
411 kmem_free(ipst->ips_ip6_asp_table,
412 ipst->ips_ip6_asp_table_count * sizeof (ip6_asp_t));
414 ipst->ips_ip6_asp_table = tmp_table;
415 ipst->ips_ip6_asp_table_count = count;
418 ipst->ips_ip6_asp_uip = B_FALSE;
419 mutex_exit(&ipst->ips_ip6_asp_lock);
422 ip_update_source_selection(ipst);
438 ip6_asp_complete_op(ipst);
493 ip6_asp_get(ip6_asp_t *dtable, size_t dtable_size, ip_stack_t *ipst)
502 bcopy(ipst->ips_ip6_asp_table, dtable,
503 MIN(ipst->ips_ip6_asp_table_count, dtable_count) *
507 return (ipst->ips_ip6_asp_table_count);