Lines Matching refs:server
246 ilb_server_t *server) in ilb_server_kstat_init() argument
260 server->iser_name, cname_buf, KSTAT_TYPE_NAMED, in ilb_server_kstat_init()
265 bcopy(&template, &server->iser_kstat, sizeof (template)); in ilb_server_kstat_init()
266 ksp->ks_data = &server->iser_kstat; in ilb_server_kstat_init()
269 kstat_named_setstr(&server->iser_kstat.ip_address, in ilb_server_kstat_init()
270 server->iser_ip_addr); in ilb_server_kstat_init()
272 ksp->ks_data_size += strlen(server->iser_ip_addr) + 1; in ilb_server_kstat_init()
760 ilb_server_t *server; in ilb_rule_del_common() local
771 while ((server = tmp_rule->ir_servers) != NULL) { in ilb_rule_del_common()
772 mutex_enter(&server->iser_lock); in ilb_rule_del_common()
773 ilb_destroy_nat_src(&server->iser_nat_src); in ilb_rule_del_common()
782 (uint64_t *)&server->iser_die_time, in ilb_rule_del_common()
786 while (server->iser_refcnt > 1) in ilb_rule_del_common()
787 cv_wait(&server->iser_cv, &server->iser_lock); in ilb_rule_del_common()
788 tmp_rule->ir_servers = server->iser_next; in ilb_rule_del_common()
789 kstat_delete_netstack(server->iser_ksp, stackid); in ilb_rule_del_common()
790 kmem_free(server, sizeof (ilb_server_t)); in ilb_rule_del_common()
1213 ilb_server_t *server; in ilb_server_add() local
1291 for (server = rule->ir_servers; server != NULL; in ilb_server_add()
1292 server = server->iser_next) { in ilb_server_add()
1293 if (IN6_ARE_ADDR_EQUAL(&server->iser_addr_v6, &info->addr) || in ilb_server_add()
1294 strcasecmp(server->iser_name, info->name) == 0) { in ilb_server_add()
1298 if (server != NULL) { in ilb_server_add()
1303 if ((server = kmem_zalloc(sizeof (ilb_server_t), KM_NOSLEEP)) == NULL) { in ilb_server_add()
1308 (void) memcpy(server->iser_name, info->name, ILB_SERVER_NAMESZ - 1); in ilb_server_add()
1309 (void) inet_ntop(AF_INET6, &info->addr, server->iser_ip_addr, in ilb_server_add()
1310 sizeof (server->iser_ip_addr)); in ilb_server_add()
1312 server->iser_ksp = ilb_server_kstat_init(stackid, rule, server); in ilb_server_add()
1313 if (server->iser_ksp == NULL) { in ilb_server_add()
1314 kmem_free(server, sizeof (ilb_server_t)); in ilb_server_add()
1319 server->iser_stackid = stackid; in ilb_server_add()
1320 server->iser_addr_v6 = info->addr; in ilb_server_add()
1321 server->iser_min_port = min_port; in ilb_server_add()
1322 server->iser_max_port = max_port; in ilb_server_add()
1324 server->iser_port_range = B_TRUE; in ilb_server_add()
1326 server->iser_port_range = B_FALSE; in ilb_server_add()
1340 if (server->iser_port_range) in ilb_server_add()
1343 port = server->iser_min_port; in ilb_server_add()
1345 if ((ret = ilb_create_nat_src(ilbs, &server->iser_nat_src, in ilb_server_add()
1346 &server->iser_addr_v6, port, &rule->ir_nat_src_start, in ilb_server_add()
1349 kstat_delete_netstack(server->iser_ksp, stackid); in ilb_server_add()
1350 kmem_free(server, sizeof (ilb_server_t)); in ilb_server_add()
1362 server->iser_refcnt = 1; in ilb_server_add()
1363 server->iser_enabled = info->flags & ILB_SERVER_ENABLED ? B_TRUE : in ilb_server_add()
1365 mutex_init(&server->iser_lock, NULL, MUTEX_DEFAULT, NULL); in ilb_server_add()
1366 cv_init(&server->iser_cv, NULL, CV_DEFAULT, NULL); in ilb_server_add()
1370 if ((ret = rule->ir_alg->ilb_alg_server_add(server, in ilb_server_add()
1372 kstat_delete_netstack(server->iser_ksp, stackid); in ilb_server_add()
1373 kmem_free(server, sizeof (ilb_server_t)); in ilb_server_add()
1382 server->iser_next = NULL; in ilb_server_add()
1384 server->iser_next = rule->ir_servers; in ilb_server_add()
1386 rule->ir_servers = server; in ilb_server_add()
1401 ilb_server_t *server = (ilb_server_t *)arg; in ilb_server_del_tq() local
1403 mutex_enter(&server->iser_lock); in ilb_server_del_tq()
1404 while (server->iser_refcnt > 1) in ilb_server_del_tq()
1405 cv_wait(&server->iser_cv, &server->iser_lock); in ilb_server_del_tq()
1406 kstat_delete_netstack(server->iser_ksp, server->iser_stackid); in ilb_server_del_tq()
1407 kmem_free(server, sizeof (ilb_server_t)); in ilb_server_del_tq()
1418 ilb_server_t *server; in ilb_server_del() local
1460 for (server = rule->ir_servers; server != NULL; in ilb_server_del()
1461 prev_server = server, server = server->iser_next) { in ilb_server_del()
1462 if (IN6_ARE_ADDR_EQUAL(&server->iser_addr_v6, addr)) in ilb_server_del()
1465 if (server == NULL) { in ilb_server_del()
1474 if ((ret = rule->ir_alg->ilb_alg_server_del(server, in ilb_server_del()
1480 rule->ir_servers = server->iser_next; in ilb_server_del()
1482 prev_server->iser_next = server->iser_next; in ilb_server_del()
1490 server->iser_enabled = B_FALSE; in ilb_server_del()
1492 mutex_enter(&server->iser_lock); in ilb_server_del()
1499 ilb_destroy_nat_src(&server->iser_nat_src); in ilb_server_del()
1503 (void) atomic_swap_64((uint64_t *)&server->iser_die_time, in ilb_server_del()
1508 if (server->iser_refcnt > 1) { in ilb_server_del()
1510 server, TQ_SLEEP); in ilb_server_del()
1511 mutex_exit(&server->iser_lock); in ilb_server_del()
1513 kstat_delete_netstack(server->iser_ksp, server->iser_stackid); in ilb_server_del()
1514 kmem_free(server, sizeof (ilb_server_t)); in ilb_server_del()
1673 ilb_server_t *server; in ilb_check() local
1735 rule->ir_alg->ilb_alg_data, &server); in ilb_check()
1755 if ((server = ilb_sticky_find_add(ilbs, rule, &addr, server, in ilb_check()
1767 *lb_dst = server->iser_addr_v6; in ilb_check()
1768 ILB_S_KSTAT(server, pkt_processed); in ilb_check()
1769 ILB_S_KSTAT_UPDATE(server, bytes_processed, pkt_len); in ilb_check()
1793 if ((src_ent = ilb_alloc_nat_addr(server->iser_nat_src, in ilb_check()
1805 info.nat_dst = server->iser_addr_v6; in ilb_check()
1806 if (rule->ir_port_range && server->iser_port_range) { in ilb_check()
1808 rule->ir_min_port + server->iser_min_port); in ilb_check()
1810 info.nat_dport = htons(server->iser_min_port); in ilb_check()
1818 if (ilb_conn_add(ilbs, rule, server, src, sport, dst, in ilb_check()
1833 info.nat_dst = server->iser_addr_v6; in ilb_check()
1835 if (rule->ir_port_range && server->iser_port_range) { in ilb_check()
1837 rule->ir_min_port + server->iser_min_port); in ilb_check()
1839 info.nat_dport = htons(server->iser_min_port); in ilb_check()
1842 if (ilb_conn_add(ilbs, rule, server, src, sport, dst, in ilb_check()
1956 ilb_server_t *server; in ilb_get_servers() local
1962 for (server = rule->ir_servers, cnt = *num_servers; in ilb_get_servers()
1963 server != NULL && cnt > 0; in ilb_get_servers()
1964 server = server->iser_next, cnt--, servers++) { in ilb_get_servers()
1965 (void) memcpy(servers->name, server->iser_name, in ilb_get_servers()
1967 servers->addr = server->iser_addr_v6; in ilb_get_servers()
1968 servers->min_port = htons(server->iser_min_port); in ilb_get_servers()
1969 servers->max_port = htons(server->iser_max_port); in ilb_get_servers()
1970 servers->flags = server->iser_enabled ? ILB_SERVER_ENABLED : 0; in ilb_get_servers()