Lines Matching refs:instance

244 exec_method(instance_t *instance, instance_method_t method, method_info_t *mi,
588 tcp_wrappers_ok(instance_t *instance) in tcp_wrappers_ok() argument
592 basic_cfg_t *cfg = instance->config->basic; in tcp_wrappers_ok()
604 daemon_name = instance->config->methods[ in tcp_wrappers_ok()
616 instance->conn_fd, NULL); in tcp_wrappers_ok()
624 req.sink(instance->conn_fd); in tcp_wrappers_ok()
631 req.sink(instance->conn_fd); in tcp_wrappers_ok()
653 instance_t *instance = arg; in conn_rate_online() local
655 assert(instance->cur_istate == IIS_OFFLINE_CONRATE); in conn_rate_online()
656 instance->timer_id = -1; in conn_rate_online()
657 update_state(instance, IIS_OFFLINE, RERR_RESTART); in conn_rate_online()
658 process_offline_inst(instance); in conn_rate_online()
806 instance_t *instance = arg; in retry_bind() local
808 switch (instance->cur_istate) { in retry_bind()
818 __FILE__, __LINE__, instance->cur_istate); in retry_bind()
823 instance->bind_timer_id = -1; in retry_bind()
824 create_bound_fds(instance); in retry_bind()
834 poll_bound_fds(instance_t *instance, boolean_t listen, char *proto_name) in poll_bound_fds() argument
836 basic_cfg_t *cfg = instance->config->basic; in poll_bound_fds()
863 handle_bind_failure(instance_t *instance) in handle_bind_failure() argument
865 basic_cfg_t *cfg = instance->config->basic; in handle_bind_failure()
872 if (instance->bind_timer_id != -1) in handle_bind_failure()
881 (++instance->bind_fail_count > cfg->bind_fail_max))) || in handle_bind_failure()
882 ((instance->bind_timer_id = iu_schedule_timer(timer_queue, in handle_bind_failure()
883 cfg->bind_fail_interval, retry_bind, instance)) == -1)) { in handle_bind_failure()
886 instance->bind_fail_count = 0; in handle_bind_failure()
888 switch (instance->cur_istate) { in handle_bind_failure()
902 instance->fmri); in handle_bind_failure()
903 update_state(instance, IIS_DEGRADED, RERR_NONE); in handle_bind_failure()
904 instance->bind_retries_exceeded = B_TRUE; in handle_bind_failure()
908 destroy_bound_fds(instance); in handle_bind_failure()
917 "%s, transitioning to maintenance"), instance->fmri); in handle_bind_failure()
918 update_state(instance, IIS_MAINTENANCE, in handle_bind_failure()
925 "degraded"), instance->fmri); in handle_bind_failure()
930 instance->bind_retries_exceeded = B_TRUE; in handle_bind_failure()
936 __FILE__, __LINE__, instance->cur_istate); in handle_bind_failure()
940 } else if (instance->cur_istate == IIS_OFFLINE) { in handle_bind_failure()
945 update_state(instance, IIS_OFFLINE_BIND, RERR_NONE); in handle_bind_failure()
1076 create_bound_fds(instance_t *instance) in create_bound_fds() argument
1078 basic_cfg_t *cfg = instance->config->basic; in create_bound_fds()
1091 pi->listen_fd = create_bound_endpoint(instance, in create_bound_fds()
1103 pi->listen_fd = create_bound_socket(instance, in create_bound_fds()
1121 close_net_fd(instance, pi->listen_fd); in create_bound_fds()
1126 unregister_rpc_service(instance->fmri, pi->ri); in create_bound_fds()
1127 if (register_rpc_service(instance->fmri, pi->ri) == in create_bound_fds()
1129 close_net_fd(instance, pi->listen_fd); in create_bound_fds()
1139 switch (instance->cur_istate) { in create_bound_fds()
1146 if (success && run_method(instance, IM_ONLINE, NULL) == -1) in create_bound_fds()
1155 if (poll_bound_fds(instance, B_TRUE, NULL) != 0) { in create_bound_fds()
1162 instance->bind_fail_count = 0; in create_bound_fds()
1174 __FILE__, __LINE__, instance->cur_istate); in create_bound_fds()
1180 handle_bind_failure(instance); in create_bound_fds()
1189 destroy_bound_fds(instance_t *instance) in destroy_bound_fds() argument
1191 basic_cfg_t *cfg = instance->config->basic; in destroy_bound_fds()
1198 unregister_rpc_service(instance->fmri, pi->ri); in destroy_bound_fds()
1200 close_net_fd(instance, pi->listen_fd); in destroy_bound_fds()
1206 if (instance->bind_timer_id != -1) in destroy_bound_fds()
1207 cancel_bind_timer(instance); in destroy_bound_fds()
1209 instance->bind_retries_exceeded = B_FALSE; in destroy_bound_fds()
1494 remove_instance(instance_t *instance) in remove_instance() argument
1496 switch (instance->cur_istate) { in remove_instance()
1500 destroy_bound_fds(instance); in remove_instance()
1503 cancel_bind_timer(instance); in remove_instance()
1506 cancel_inst_timer(instance); in remove_instance()
1511 unregister_instance_methods(instance); in remove_instance()
1513 uu_list_remove(instance_list, instance); in remove_instance()
1514 destroy_instance(instance); in remove_instance()
1693 handle_restarter_event(instance_t *instance, restarter_event_type_t event, in handle_restarter_event() argument
1708 update_state(instance, instance->cur_istate, RERR_NONE); in handle_restarter_event()
1711 refresh_instance(instance); in handle_restarter_event()
1720 switch (instance->cur_istate) { in handle_restarter_event()
1723 destroy_bound_fds(instance); in handle_restarter_event()
1724 (void) run_method(instance, IM_OFFLINE, NULL); in handle_restarter_event()
1728 remove_instance(instance); in handle_restarter_event()
1732 switch (instance->cur_istate) { in handle_restarter_event()
1742 if (instance->cur_istate == IIS_OFFLINE_BIND) { in handle_restarter_event()
1743 cancel_bind_timer(instance); in handle_restarter_event()
1744 } else if (instance->cur_istate == in handle_restarter_event()
1746 cancel_inst_timer(instance); in handle_restarter_event()
1748 update_state(instance, IIS_OFFLINE, RERR_RESTART); in handle_restarter_event()
1754 switch (instance->cur_istate) { in handle_restarter_event()
1765 if (!(instance->config->basic->iswait && in handle_restarter_event()
1766 (uu_list_first(instance->start_pids) != NULL))) { in handle_restarter_event()
1767 create_bound_fds(instance); in handle_restarter_event()
1769 update_state(instance, IIS_ONLINE, RERR_NONE); in handle_restarter_event()
1779 (void) run_method(instance, IM_DISABLE, NULL); in handle_restarter_event()
1789 update_state(instance, IIS_MAINTENANCE, RERR_RESTART); in handle_restarter_event()
1806 cancel_bind_timer(instance); in handle_restarter_event()
1807 update_state(instance, IIS_OFFLINE, RERR_RESTART); in handle_restarter_event()
1808 (void) run_method(instance, IM_DISABLE, NULL); in handle_restarter_event()
1819 cancel_bind_timer(instance); in handle_restarter_event()
1820 update_state(instance, IIS_MAINTENANCE, RERR_RESTART); in handle_restarter_event()
1835 destroy_bound_fds(instance); in handle_restarter_event()
1841 instance->disable_req = B_TRUE; in handle_restarter_event()
1842 (void) run_method(instance, IM_OFFLINE, NULL); in handle_restarter_event()
1857 instance->maintenance_req = B_TRUE; in handle_restarter_event()
1867 destroy_bound_fds(instance); in handle_restarter_event()
1868 (void) run_method(instance, IM_OFFLINE, NULL); in handle_restarter_event()
1875 update_state(instance, IIS_DISABLED, RERR_NONE); in handle_restarter_event()
1900 destroy_instance_cfg(instance->config); in handle_restarter_event()
1901 instance->config = read_instance_cfg(instance->fmri); in handle_restarter_event()
1902 if (instance->config != NULL) { in handle_restarter_event()
1903 update_state(instance, IIS_OFFLINE, in handle_restarter_event()
1905 process_offline_inst(instance); in handle_restarter_event()
1907 log_invalid_cfg(instance->fmri); in handle_restarter_event()
1908 update_state(instance, IIS_MAINTENANCE, in handle_restarter_event()
1921 update_state(instance, IIS_MAINTENANCE, RERR_RESTART); in handle_restarter_event()
1937 destroy_instance_cfg(instance->config); in handle_restarter_event()
1938 instance->config = read_instance_cfg(instance->fmri); in handle_restarter_event()
1939 if (instance->config != NULL) { in handle_restarter_event()
1940 update_state(instance, IIS_OFFLINE, in handle_restarter_event()
1942 process_offline_inst(instance); in handle_restarter_event()
1959 if ((read_enable_merged(instance->fmri, in handle_restarter_event()
1961 update_state(instance, IIS_DISABLED, in handle_restarter_event()
1964 log_invalid_cfg(instance->fmri); in handle_restarter_event()
1965 update_state(instance, IIS_MAINTENANCE, in handle_restarter_event()
1982 cancel_inst_timer(instance); in handle_restarter_event()
1983 update_state(instance, IIS_OFFLINE, RERR_RESTART); in handle_restarter_event()
1984 (void) run_method(instance, IM_DISABLE, NULL); in handle_restarter_event()
1995 cancel_inst_timer(instance); in handle_restarter_event()
1996 update_state(instance, IIS_MAINTENANCE, RERR_RESTART); in handle_restarter_event()
2009 update_state(instance, IIS_OFFLINE, RERR_RESTART); in handle_restarter_event()
2010 (void) run_method(instance, IM_DISABLE, NULL); in handle_restarter_event()
2020 update_state(instance, IIS_MAINTENANCE, RERR_RESTART); in handle_restarter_event()
2050 instance_t *instance; in process_restarter_event() local
2093 for (instance = uu_list_first(instance_list); instance != NULL; in process_restarter_event()
2094 instance = uu_list_next(instance_list, instance)) { in process_restarter_event()
2095 if (strcmp(instance->fmri, fmri) == 0) in process_restarter_event()
2099 if (instance == NULL) { in process_restarter_event()
2104 if (((instance = create_instance(fmri)) == NULL) || in process_restarter_event()
2105 (retrieve_instance_state(instance) != 0) || in process_restarter_event()
2106 (retrieve_method_pids(instance) != 0)) { in process_restarter_event()
2107 destroy_instance(instance); in process_restarter_event()
2112 if (((err = iterate_repository_contracts(instance, 0)) in process_restarter_event()
2116 instance->fmri, strerror(err)); in process_restarter_event()
2117 destroy_instance(instance); in process_restarter_event()
2122 uu_list_node_init(instance, &instance->link, instance_pool); in process_restarter_event()
2123 (void) uu_list_insert_after(instance_list, NULL, instance); in process_restarter_event()
2130 if ((instance->cur_istate != IIS_DISABLED) && in process_restarter_event()
2131 (instance->cur_istate != IIS_MAINTENANCE) && in process_restarter_event()
2132 (instance->cur_istate != IIS_UNINITIALIZED)) { in process_restarter_event()
2133 instance->config = read_instance_cfg(instance->fmri); in process_restarter_event()
2134 if (instance->config == NULL) { in process_restarter_event()
2135 log_invalid_cfg(instance->fmri); in process_restarter_event()
2136 update_state(instance, IIS_MAINTENANCE, in process_restarter_event()
2146 instance->fmri); in process_restarter_event()
2153 if (INST_IN_TRANSITION(instance)) { in process_restarter_event()
2155 instance->fmri); in process_restarter_event()
2156 instance->pending_rst_event = event_type; in process_restarter_event()
2158 handle_restarter_event(instance, event_type, B_TRUE); in process_restarter_event()
2659 passes_basic_exec_checks(const char *instance, const char *method, in passes_basic_exec_checks() argument
2669 method, instance, strerror(errno)); in passes_basic_exec_checks()
2681 method, instance); in passes_basic_exec_checks()
2685 "any execute permissions set"), method, instance); in passes_basic_exec_checks()
2693 exec_method(instance_t *instance, instance_method_t method, method_info_t *mi, in exec_method() argument
2701 basic_cfg_t *cfg = instance->config->basic; in exec_method()
2708 if (!tcp_wrappers_ok(instance)) in exec_method()
2733 args = expand_address(instance, pi); in exec_method()
2749 methods[method].name, instance->fmri); in exec_method()
2764 if (instance->remote_addr.ss_family == AF_INET) { in exec_method()
2765 struct in_addr *in = SS_SINADDR(instance->remote_addr); in exec_method()
2773 addr6 = (uint32_t *)SS_SINADDR(instance->remote_addr); in exec_method()
2779 ntohs(SS_PORT(instance->remote_addr)); in exec_method()
2781 if (getsockname(instance->conn_fd, (struct sockaddr *)&ss, in exec_method()
2828 error_msg(msg, methods[method].name, instance->fmri); in exec_method()
2863 methods[method].name, instance->fmri, errf, in exec_method()
2885 error_msg(msg, methods[method].name, instance->fmri); in exec_method()
2893 (void) dup2(instance->conn_fd, STDIN_FILENO); in exec_method()
2905 env = set_smf_env(mthd_ctxt, instance, methods[method].name); in exec_method()
2920 methods[method].name, instance->fmri, strerror(errno)); in exec_method()
2922 if ((method == IM_START) && (instance->config->basic->iswait)) { in exec_method()
2933 consume_wait_data(instance, 0); in exec_method()
2961 smf_kill_process(instance_t *instance, int sig) in smf_kill_process() argument
2967 for (rv = uu_list_first(instance->start_pids); in smf_kill_process()
2969 rv = uu_list_next(instance->start_pids, rv)) { in smf_kill_process()
2975 rv->val, instance->fmri, strerror(errno)); in smf_kill_process()
2994 run_method(instance_t *instance, instance_method_t method, in run_method() argument
3002 instance_cfg_t *cfg = instance->config; in run_method()
3012 update_instance_states(instance, get_method_state(method), in run_method()
3022 if ((method == IM_OFFLINE) && instance->config->basic->iswait) { in run_method()
3025 instance->fmri); in run_method()
3027 ret = smf_kill_process(instance, sig); in run_method()
3028 process_non_start_term(instance, ret); in run_method()
3031 process_non_start_term(instance, IMRET_SUCCESS); in run_method()
3040 process_non_start_term(instance, IMRET_SUCCESS); in run_method()
3046 ret = iterate_repository_contracts(instance, sig); in run_method()
3051 instance->fmri, strerror(ret)); in run_method()
3054 process_non_start_term(instance, IMRET_SUCCESS); in run_method()
3060 ret = smf_kill_process(instance, sig); in run_method()
3061 process_non_start_term(instance, ret); in run_method()
3070 if ((mthd_ctxt = read_method_context(instance->fmri, in run_method()
3078 if (!passes_basic_exec_checks(instance->fmri, methods[method].name, in run_method()
3084 if (contract_prefork(instance->fmri, method) == -1) in run_method()
3094 methods[method].name, instance->fmri, strerror(serrno)); in run_method()
3099 exec_method(instance, method, mi, mthd_ctxt, start_info); in run_method()
3113 if (register_method(instance, child_pid, cid, method, in run_method()
3124 instance->fmri); in run_method()
3126 process_non_start_term(instance, IMRET_FAILURE); in run_method()
3129 add_method_ids(instance, child_pid, cid, method); in run_method()
3138 inet_ntop_native(instance->remote_addr.ss_family, in run_method()
3139 SS_SINADDR(instance->remote_addr), buf, in run_method()
3141 ntohs(SS_PORT(instance->remote_addr))); in run_method()
3159 destroy_bound_fds(instance); in run_method()
3160 update_state(instance, IIS_MAINTENANCE, RERR_FAULT); in run_method()
3164 process_non_start_term(instance, IMRET_FAILURE); in run_method()
3171 pending_connections(instance_t *instance, proto_info_t *pi) in pending_connections() argument
3173 if (instance->config->basic->istlx) { in pending_connections()
3183 accept_connection(instance_t *instance, proto_info_t *pi) in accept_connection() argument
3188 if (instance->config->basic->istlx) { in accept_connection()
3193 fd = tlx_accept(instance->fmri, (tlx_info_t *)pi, in accept_connection()
3194 &(instance->remote_addr)); in accept_connection()
3199 size = sizeof (instance->remote_addr); in accept_connection()
3201 (struct sockaddr *)&(instance->remote_addr), &size); in accept_connection()
3219 process_nowait_request(instance_t *instance, proto_info_t *pi) in process_nowait_request() argument
3221 basic_cfg_t *cfg = instance->config->basic; in process_nowait_request()
3227 if ((instance->conn_fd = accept_connection(instance, pi)) == -1) { in process_nowait_request()
3243 if (instance->conn_rate_count++ == 0) { in process_nowait_request()
3244 instance->conn_rate_start = time(NULL); in process_nowait_request()
3245 } else if (instance->conn_rate_count > in process_nowait_request()
3249 if ((now - instance->conn_rate_start) > 1) { in process_nowait_request()
3250 instance->conn_rate_start = now; in process_nowait_request()
3251 instance->conn_rate_count = 1; in process_nowait_request()
3280 instance->fmri, cfg->conn_rate_offline); in process_nowait_request()
3282 close_net_fd(instance, instance->conn_fd); in process_nowait_request()
3283 instance->conn_fd = -1; in process_nowait_request()
3285 destroy_bound_fds(instance); in process_nowait_request()
3287 instance->conn_rate_count = 0; in process_nowait_request()
3289 instance->conn_rate_exceeded = B_TRUE; in process_nowait_request()
3290 (void) run_method(instance, IM_OFFLINE, NULL); in process_nowait_request()
3297 ret = run_method(instance, IM_START, pi); in process_nowait_request()
3299 close_net_fd(instance, instance->conn_fd); in process_nowait_request()
3300 instance->conn_fd = -1; in process_nowait_request()
3305 instance->copies++; in process_nowait_request()
3310 if (copies_limit_exceeded(instance)) { in process_nowait_request()
3332 instance->fmri); in process_nowait_request()
3333 destroy_bound_fds(instance); in process_nowait_request()
3334 (void) run_method(instance, IM_OFFLINE, NULL); in process_nowait_request()
3345 process_wait_request(instance_t *instance, const proto_info_t *pi) in process_wait_request() argument
3347 basic_cfg_t *cfg = instance->config->basic; in process_wait_request()
3352 instance->conn_fd = pi->listen_fd; in process_wait_request()
3363 if (instance->fail_rate_count++ == 0) { in process_wait_request()
3364 instance->fail_rate_start = time(NULL); in process_wait_request()
3365 } else if (instance->fail_rate_count > cfg->wait_fail_cnt) { in process_wait_request()
3368 if ((now - instance->fail_rate_start) > in process_wait_request()
3370 instance->fail_rate_start = now; in process_wait_request()
3371 instance->fail_rate_count = 1; in process_wait_request()
3404 "maintenance"), instance->fmri); in process_wait_request()
3405 instance->fail_rate_count = 0; in process_wait_request()
3407 destroy_bound_fds(instance); in process_wait_request()
3409 instance->maintenance_req = B_TRUE; in process_wait_request()
3410 (void) run_method(instance, IM_OFFLINE, NULL); in process_wait_request()
3416 ret = run_method(instance, IM_START, pi); in process_wait_request()
3418 instance->conn_fd = -1; in process_wait_request()
3425 (void) poll_bound_fds(instance, B_FALSE, pi->proto); in process_wait_request()
3435 instance_t *instance; in process_network_events() local
3437 for (instance = uu_list_first(instance_list); instance != NULL; in process_network_events()
3438 instance = uu_list_next(instance_list, instance)) { in process_network_events()
3446 switch (instance->cur_istate) { in process_network_events()
3455 cfg = instance->config->basic; in process_network_events()
3461 pending_connections(instance, pi)) { in process_network_events()
3463 process_wait_request(instance, pi); in process_network_events()
3465 process_nowait_request(instance, pi); in process_network_events()
3499 instance_t *instance; in event_loop() local
3576 for (instance = uu_list_first(instance_list); in event_loop()
3577 instance != NULL; in event_loop()
3578 instance = uu_list_next(instance_list, instance)) { in event_loop()
3579 if (!instance_stopped(instance)) { in event_loop()
3581 instance->fmri); in event_loop()
3586 if (instance == NULL) in event_loop()