Lines Matching refs:server

245     ilb_server_t *server)  in ilb_server_kstat_init()  argument
259 server->iser_name, cname_buf, KSTAT_TYPE_NAMED, in ilb_server_kstat_init()
264 bcopy(&template, &server->iser_kstat, sizeof (template)); in ilb_server_kstat_init()
265 ksp->ks_data = &server->iser_kstat; in ilb_server_kstat_init()
268 kstat_named_setstr(&server->iser_kstat.ip_address, in ilb_server_kstat_init()
269 server->iser_ip_addr); in ilb_server_kstat_init()
271 ksp->ks_data_size += strlen(server->iser_ip_addr) + 1; in ilb_server_kstat_init()
759 ilb_server_t *server; in ilb_rule_del_common() local
770 while ((server = tmp_rule->ir_servers) != NULL) { in ilb_rule_del_common()
771 mutex_enter(&server->iser_lock); in ilb_rule_del_common()
772 ilb_destroy_nat_src(&server->iser_nat_src); in ilb_rule_del_common()
781 (uint64_t *)&server->iser_die_time, in ilb_rule_del_common()
785 while (server->iser_refcnt > 1) in ilb_rule_del_common()
786 cv_wait(&server->iser_cv, &server->iser_lock); in ilb_rule_del_common()
787 tmp_rule->ir_servers = server->iser_next; in ilb_rule_del_common()
788 kstat_delete_netstack(server->iser_ksp, stackid); in ilb_rule_del_common()
789 kmem_free(server, sizeof (ilb_server_t)); in ilb_rule_del_common()
1212 ilb_server_t *server; in ilb_server_add() local
1290 for (server = rule->ir_servers; server != NULL; in ilb_server_add()
1291 server = server->iser_next) { in ilb_server_add()
1292 if (IN6_ARE_ADDR_EQUAL(&server->iser_addr_v6, &info->addr) || in ilb_server_add()
1293 strcasecmp(server->iser_name, info->name) == 0) { in ilb_server_add()
1297 if (server != NULL) { in ilb_server_add()
1302 if ((server = kmem_zalloc(sizeof (ilb_server_t), KM_NOSLEEP)) == NULL) { in ilb_server_add()
1307 (void) memcpy(server->iser_name, info->name, ILB_SERVER_NAMESZ - 1); in ilb_server_add()
1308 (void) inet_ntop(AF_INET6, &info->addr, server->iser_ip_addr, in ilb_server_add()
1309 sizeof (server->iser_ip_addr)); in ilb_server_add()
1311 server->iser_ksp = ilb_server_kstat_init(stackid, rule, server); in ilb_server_add()
1312 if (server->iser_ksp == NULL) { in ilb_server_add()
1313 kmem_free(server, sizeof (ilb_server_t)); in ilb_server_add()
1318 server->iser_stackid = stackid; in ilb_server_add()
1319 server->iser_addr_v6 = info->addr; in ilb_server_add()
1320 server->iser_min_port = min_port; in ilb_server_add()
1321 server->iser_max_port = max_port; in ilb_server_add()
1323 server->iser_port_range = B_TRUE; in ilb_server_add()
1325 server->iser_port_range = B_FALSE; in ilb_server_add()
1339 if (server->iser_port_range) in ilb_server_add()
1342 port = server->iser_min_port; in ilb_server_add()
1344 if ((ret = ilb_create_nat_src(ilbs, &server->iser_nat_src, in ilb_server_add()
1345 &server->iser_addr_v6, port, &rule->ir_nat_src_start, in ilb_server_add()
1348 kstat_delete_netstack(server->iser_ksp, stackid); in ilb_server_add()
1349 kmem_free(server, sizeof (ilb_server_t)); in ilb_server_add()
1361 server->iser_refcnt = 1; in ilb_server_add()
1362 server->iser_enabled = info->flags & ILB_SERVER_ENABLED ? B_TRUE : in ilb_server_add()
1364 mutex_init(&server->iser_lock, NULL, MUTEX_DEFAULT, NULL); in ilb_server_add()
1365 cv_init(&server->iser_cv, NULL, CV_DEFAULT, NULL); in ilb_server_add()
1369 if ((ret = rule->ir_alg->ilb_alg_server_add(server, in ilb_server_add()
1371 kstat_delete_netstack(server->iser_ksp, stackid); in ilb_server_add()
1372 kmem_free(server, sizeof (ilb_server_t)); in ilb_server_add()
1381 server->iser_next = NULL; in ilb_server_add()
1383 server->iser_next = rule->ir_servers; in ilb_server_add()
1385 rule->ir_servers = server; in ilb_server_add()
1400 ilb_server_t *server = (ilb_server_t *)arg; in ilb_server_del_tq() local
1402 mutex_enter(&server->iser_lock); in ilb_server_del_tq()
1403 while (server->iser_refcnt > 1) in ilb_server_del_tq()
1404 cv_wait(&server->iser_cv, &server->iser_lock); in ilb_server_del_tq()
1405 kstat_delete_netstack(server->iser_ksp, server->iser_stackid); in ilb_server_del_tq()
1406 kmem_free(server, sizeof (ilb_server_t)); in ilb_server_del_tq()
1417 ilb_server_t *server; in ilb_server_del() local
1459 for (server = rule->ir_servers; server != NULL; in ilb_server_del()
1460 prev_server = server, server = server->iser_next) { in ilb_server_del()
1461 if (IN6_ARE_ADDR_EQUAL(&server->iser_addr_v6, addr)) in ilb_server_del()
1464 if (server == NULL) { in ilb_server_del()
1473 if ((ret = rule->ir_alg->ilb_alg_server_del(server, in ilb_server_del()
1479 rule->ir_servers = server->iser_next; in ilb_server_del()
1481 prev_server->iser_next = server->iser_next; in ilb_server_del()
1489 server->iser_enabled = B_FALSE; in ilb_server_del()
1491 mutex_enter(&server->iser_lock); in ilb_server_del()
1498 ilb_destroy_nat_src(&server->iser_nat_src); in ilb_server_del()
1502 (void) atomic_swap_64((uint64_t *)&server->iser_die_time, in ilb_server_del()
1507 if (server->iser_refcnt > 1) { in ilb_server_del()
1509 server, TQ_SLEEP); in ilb_server_del()
1510 mutex_exit(&server->iser_lock); in ilb_server_del()
1512 kstat_delete_netstack(server->iser_ksp, server->iser_stackid); in ilb_server_del()
1513 kmem_free(server, sizeof (ilb_server_t)); in ilb_server_del()
1672 ilb_server_t *server; in ilb_check() local
1734 rule->ir_alg->ilb_alg_data, &server); in ilb_check()
1754 if ((server = ilb_sticky_find_add(ilbs, rule, &addr, server, in ilb_check()
1766 *lb_dst = server->iser_addr_v6; in ilb_check()
1767 ILB_S_KSTAT(server, pkt_processed); in ilb_check()
1768 ILB_S_KSTAT_UPDATE(server, bytes_processed, pkt_len); in ilb_check()
1792 if ((src_ent = ilb_alloc_nat_addr(server->iser_nat_src, in ilb_check()
1804 info.nat_dst = server->iser_addr_v6; in ilb_check()
1805 if (rule->ir_port_range && server->iser_port_range) { in ilb_check()
1807 rule->ir_min_port + server->iser_min_port); in ilb_check()
1809 info.nat_dport = htons(server->iser_min_port); in ilb_check()
1817 if (ilb_conn_add(ilbs, rule, server, src, sport, dst, in ilb_check()
1832 info.nat_dst = server->iser_addr_v6; in ilb_check()
1834 if (rule->ir_port_range && server->iser_port_range) { in ilb_check()
1836 rule->ir_min_port + server->iser_min_port); in ilb_check()
1838 info.nat_dport = htons(server->iser_min_port); in ilb_check()
1841 if (ilb_conn_add(ilbs, rule, server, src, sport, dst, in ilb_check()
1955 ilb_server_t *server; in ilb_get_servers() local
1961 for (server = rule->ir_servers, cnt = *num_servers; in ilb_get_servers()
1962 server != NULL && cnt > 0; in ilb_get_servers()
1963 server = server->iser_next, cnt--, servers++) { in ilb_get_servers()
1964 (void) memcpy(servers->name, server->iser_name, in ilb_get_servers()
1966 servers->addr = server->iser_addr_v6; in ilb_get_servers()
1967 servers->min_port = htons(server->iser_min_port); in ilb_get_servers()
1968 servers->max_port = htons(server->iser_max_port); in ilb_get_servers()
1969 servers->flags = server->iser_enabled ? ILB_SERVER_ENABLED : 0; in ilb_get_servers()