Lines Matching refs:instance

242 exec_method(instance_t *instance, instance_method_t method, method_info_t *mi,
586 tcp_wrappers_ok(instance_t *instance) in tcp_wrappers_ok() argument
590 basic_cfg_t *cfg = instance->config->basic; in tcp_wrappers_ok()
602 daemon_name = instance->config->methods[ in tcp_wrappers_ok()
614 instance->conn_fd, NULL); in tcp_wrappers_ok()
622 req.sink(instance->conn_fd); in tcp_wrappers_ok()
629 req.sink(instance->conn_fd); in tcp_wrappers_ok()
651 instance_t *instance = arg; in conn_rate_online() local
653 assert(instance->cur_istate == IIS_OFFLINE_CONRATE); in conn_rate_online()
654 instance->timer_id = -1; in conn_rate_online()
655 update_state(instance, IIS_OFFLINE, RERR_RESTART); in conn_rate_online()
656 process_offline_inst(instance); in conn_rate_online()
804 instance_t *instance = arg; in retry_bind() local
806 switch (instance->cur_istate) { in retry_bind()
816 __FILE__, __LINE__, instance->cur_istate); in retry_bind()
821 instance->bind_timer_id = -1; in retry_bind()
822 create_bound_fds(instance); in retry_bind()
832 poll_bound_fds(instance_t *instance, boolean_t listen, char *proto_name) in poll_bound_fds() argument
834 basic_cfg_t *cfg = instance->config->basic; in poll_bound_fds()
861 handle_bind_failure(instance_t *instance) in handle_bind_failure() argument
863 basic_cfg_t *cfg = instance->config->basic; in handle_bind_failure()
870 if (instance->bind_timer_id != -1) in handle_bind_failure()
879 (++instance->bind_fail_count > cfg->bind_fail_max))) || in handle_bind_failure()
880 ((instance->bind_timer_id = iu_schedule_timer(timer_queue, in handle_bind_failure()
881 cfg->bind_fail_interval, retry_bind, instance)) == -1)) { in handle_bind_failure()
884 instance->bind_fail_count = 0; in handle_bind_failure()
886 switch (instance->cur_istate) { in handle_bind_failure()
900 instance->fmri); in handle_bind_failure()
901 update_state(instance, IIS_DEGRADED, RERR_NONE); in handle_bind_failure()
902 instance->bind_retries_exceeded = B_TRUE; in handle_bind_failure()
906 destroy_bound_fds(instance); in handle_bind_failure()
915 "%s, transitioning to maintenance"), instance->fmri); in handle_bind_failure()
916 update_state(instance, IIS_MAINTENANCE, in handle_bind_failure()
923 "degraded"), instance->fmri); in handle_bind_failure()
928 instance->bind_retries_exceeded = B_TRUE; in handle_bind_failure()
934 __FILE__, __LINE__, instance->cur_istate); in handle_bind_failure()
938 } else if (instance->cur_istate == IIS_OFFLINE) { in handle_bind_failure()
943 update_state(instance, IIS_OFFLINE_BIND, RERR_NONE); in handle_bind_failure()
1074 create_bound_fds(instance_t *instance) in create_bound_fds() argument
1076 basic_cfg_t *cfg = instance->config->basic; in create_bound_fds()
1089 pi->listen_fd = create_bound_endpoint(instance, in create_bound_fds()
1101 pi->listen_fd = create_bound_socket(instance, in create_bound_fds()
1119 close_net_fd(instance, pi->listen_fd); in create_bound_fds()
1124 unregister_rpc_service(instance->fmri, pi->ri); in create_bound_fds()
1125 if (register_rpc_service(instance->fmri, pi->ri) == in create_bound_fds()
1127 close_net_fd(instance, pi->listen_fd); in create_bound_fds()
1137 switch (instance->cur_istate) { in create_bound_fds()
1144 if (success && run_method(instance, IM_ONLINE, NULL) == -1) in create_bound_fds()
1153 if (poll_bound_fds(instance, B_TRUE, NULL) != 0) { in create_bound_fds()
1160 instance->bind_fail_count = 0; in create_bound_fds()
1172 __FILE__, __LINE__, instance->cur_istate); in create_bound_fds()
1178 handle_bind_failure(instance); in create_bound_fds()
1187 destroy_bound_fds(instance_t *instance) in destroy_bound_fds() argument
1189 basic_cfg_t *cfg = instance->config->basic; in destroy_bound_fds()
1196 unregister_rpc_service(instance->fmri, pi->ri); in destroy_bound_fds()
1198 close_net_fd(instance, pi->listen_fd); in destroy_bound_fds()
1204 if (instance->bind_timer_id != -1) in destroy_bound_fds()
1205 cancel_bind_timer(instance); in destroy_bound_fds()
1207 instance->bind_retries_exceeded = B_FALSE; in destroy_bound_fds()
1492 remove_instance(instance_t *instance) in remove_instance() argument
1494 switch (instance->cur_istate) { in remove_instance()
1498 destroy_bound_fds(instance); in remove_instance()
1501 cancel_bind_timer(instance); in remove_instance()
1504 cancel_inst_timer(instance); in remove_instance()
1509 unregister_instance_methods(instance); in remove_instance()
1511 uu_list_remove(instance_list, instance); in remove_instance()
1512 destroy_instance(instance); in remove_instance()
1691 handle_restarter_event(instance_t *instance, restarter_event_type_t event, in handle_restarter_event() argument
1706 update_state(instance, instance->cur_istate, RERR_NONE); in handle_restarter_event()
1709 refresh_instance(instance); in handle_restarter_event()
1718 switch (instance->cur_istate) { in handle_restarter_event()
1721 destroy_bound_fds(instance); in handle_restarter_event()
1722 (void) run_method(instance, IM_OFFLINE, NULL); in handle_restarter_event()
1726 remove_instance(instance); in handle_restarter_event()
1730 switch (instance->cur_istate) { in handle_restarter_event()
1740 if (instance->cur_istate == IIS_OFFLINE_BIND) { in handle_restarter_event()
1741 cancel_bind_timer(instance); in handle_restarter_event()
1742 } else if (instance->cur_istate == in handle_restarter_event()
1744 cancel_inst_timer(instance); in handle_restarter_event()
1746 update_state(instance, IIS_OFFLINE, RERR_RESTART); in handle_restarter_event()
1752 switch (instance->cur_istate) { in handle_restarter_event()
1763 if (!(instance->config->basic->iswait && in handle_restarter_event()
1764 (uu_list_first(instance->start_pids) != NULL))) { in handle_restarter_event()
1765 create_bound_fds(instance); in handle_restarter_event()
1767 update_state(instance, IIS_ONLINE, RERR_NONE); in handle_restarter_event()
1777 (void) run_method(instance, IM_DISABLE, NULL); in handle_restarter_event()
1787 update_state(instance, IIS_MAINTENANCE, RERR_RESTART); in handle_restarter_event()
1804 cancel_bind_timer(instance); in handle_restarter_event()
1805 update_state(instance, IIS_OFFLINE, RERR_RESTART); in handle_restarter_event()
1806 (void) run_method(instance, IM_DISABLE, NULL); in handle_restarter_event()
1817 cancel_bind_timer(instance); in handle_restarter_event()
1818 update_state(instance, IIS_MAINTENANCE, RERR_RESTART); in handle_restarter_event()
1833 destroy_bound_fds(instance); in handle_restarter_event()
1839 instance->disable_req = B_TRUE; in handle_restarter_event()
1840 (void) run_method(instance, IM_OFFLINE, NULL); in handle_restarter_event()
1855 instance->maintenance_req = B_TRUE; in handle_restarter_event()
1865 destroy_bound_fds(instance); in handle_restarter_event()
1866 (void) run_method(instance, IM_OFFLINE, NULL); in handle_restarter_event()
1873 update_state(instance, IIS_DISABLED, RERR_NONE); in handle_restarter_event()
1898 destroy_instance_cfg(instance->config); in handle_restarter_event()
1899 instance->config = read_instance_cfg(instance->fmri); in handle_restarter_event()
1900 if (instance->config != NULL) { in handle_restarter_event()
1901 update_state(instance, IIS_OFFLINE, in handle_restarter_event()
1903 process_offline_inst(instance); in handle_restarter_event()
1905 log_invalid_cfg(instance->fmri); in handle_restarter_event()
1906 update_state(instance, IIS_MAINTENANCE, in handle_restarter_event()
1919 update_state(instance, IIS_MAINTENANCE, RERR_RESTART); in handle_restarter_event()
1935 destroy_instance_cfg(instance->config); in handle_restarter_event()
1936 instance->config = read_instance_cfg(instance->fmri); in handle_restarter_event()
1937 if (instance->config != NULL) { in handle_restarter_event()
1938 update_state(instance, IIS_OFFLINE, in handle_restarter_event()
1940 process_offline_inst(instance); in handle_restarter_event()
1957 if ((read_enable_merged(instance->fmri, in handle_restarter_event()
1959 update_state(instance, IIS_DISABLED, in handle_restarter_event()
1962 log_invalid_cfg(instance->fmri); in handle_restarter_event()
1963 update_state(instance, IIS_MAINTENANCE, in handle_restarter_event()
1980 cancel_inst_timer(instance); in handle_restarter_event()
1981 update_state(instance, IIS_OFFLINE, RERR_RESTART); in handle_restarter_event()
1982 (void) run_method(instance, IM_DISABLE, NULL); in handle_restarter_event()
1993 cancel_inst_timer(instance); in handle_restarter_event()
1994 update_state(instance, IIS_MAINTENANCE, RERR_RESTART); in handle_restarter_event()
2007 update_state(instance, IIS_OFFLINE, RERR_RESTART); in handle_restarter_event()
2008 (void) run_method(instance, IM_DISABLE, NULL); in handle_restarter_event()
2018 update_state(instance, IIS_MAINTENANCE, RERR_RESTART); in handle_restarter_event()
2048 instance_t *instance; in process_restarter_event() local
2091 for (instance = uu_list_first(instance_list); instance != NULL; in process_restarter_event()
2092 instance = uu_list_next(instance_list, instance)) { in process_restarter_event()
2093 if (strcmp(instance->fmri, fmri) == 0) in process_restarter_event()
2097 if (instance == NULL) { in process_restarter_event()
2102 if (((instance = create_instance(fmri)) == NULL) || in process_restarter_event()
2103 (retrieve_instance_state(instance) != 0) || in process_restarter_event()
2104 (retrieve_method_pids(instance) != 0)) { in process_restarter_event()
2105 destroy_instance(instance); in process_restarter_event()
2110 if (((err = iterate_repository_contracts(instance, 0)) in process_restarter_event()
2114 instance->fmri, strerror(err)); in process_restarter_event()
2115 destroy_instance(instance); in process_restarter_event()
2120 uu_list_node_init(instance, &instance->link, instance_pool); in process_restarter_event()
2121 (void) uu_list_insert_after(instance_list, NULL, instance); in process_restarter_event()
2128 if ((instance->cur_istate != IIS_DISABLED) && in process_restarter_event()
2129 (instance->cur_istate != IIS_MAINTENANCE) && in process_restarter_event()
2130 (instance->cur_istate != IIS_UNINITIALIZED)) { in process_restarter_event()
2131 instance->config = read_instance_cfg(instance->fmri); in process_restarter_event()
2132 if (instance->config == NULL) { in process_restarter_event()
2133 log_invalid_cfg(instance->fmri); in process_restarter_event()
2134 update_state(instance, IIS_MAINTENANCE, in process_restarter_event()
2144 instance->fmri); in process_restarter_event()
2151 if (INST_IN_TRANSITION(instance)) { in process_restarter_event()
2153 instance->fmri); in process_restarter_event()
2154 instance->pending_rst_event = event_type; in process_restarter_event()
2156 handle_restarter_event(instance, event_type, B_TRUE); in process_restarter_event()
2657 passes_basic_exec_checks(const char *instance, const char *method, in passes_basic_exec_checks() argument
2667 method, instance, strerror(errno)); in passes_basic_exec_checks()
2679 method, instance); in passes_basic_exec_checks()
2683 "any execute permissions set"), method, instance); in passes_basic_exec_checks()
2691 exec_method(instance_t *instance, instance_method_t method, method_info_t *mi, in exec_method() argument
2698 basic_cfg_t *cfg = instance->config->basic; in exec_method()
2705 if (!tcp_wrappers_ok(instance)) in exec_method()
2724 args = expand_address(instance, pi); in exec_method()
2740 methods[method].name, instance->fmri); in exec_method()
2755 if (instance->remote_addr.ss_family == AF_INET) { in exec_method()
2756 struct in_addr *in = SS_SINADDR(instance->remote_addr); in exec_method()
2764 addr6 = (uint32_t *)SS_SINADDR(instance->remote_addr); in exec_method()
2770 ntohs(SS_PORT(instance->remote_addr)); in exec_method()
2772 if (getsockname(instance->conn_fd, (struct sockaddr *)&ss, in exec_method()
2819 error_msg(msg, methods[method].name, instance->fmri); in exec_method()
2854 methods[method].name, instance->fmri, errf, in exec_method()
2876 error_msg(msg, methods[method].name, instance->fmri); in exec_method()
2884 (void) dup2(instance->conn_fd, STDIN_FILENO); in exec_method()
2896 env = set_smf_env(mthd_ctxt, instance, methods[method].name); in exec_method()
2911 methods[method].name, instance->fmri, strerror(errno)); in exec_method()
2913 if ((method == IM_START) && (instance->config->basic->iswait)) { in exec_method()
2924 consume_wait_data(instance, 0); in exec_method()
2952 smf_kill_process(instance_t *instance, int sig) in smf_kill_process() argument
2958 for (rv = uu_list_first(instance->start_pids); in smf_kill_process()
2960 rv = uu_list_next(instance->start_pids, rv)) { in smf_kill_process()
2966 rv->val, instance->fmri, strerror(errno)); in smf_kill_process()
2985 run_method(instance_t *instance, instance_method_t method, in run_method() argument
2993 instance_cfg_t *cfg = instance->config; in run_method()
3003 update_instance_states(instance, get_method_state(method), in run_method()
3013 if ((method == IM_OFFLINE) && instance->config->basic->iswait) { in run_method()
3016 instance->fmri); in run_method()
3018 ret = smf_kill_process(instance, sig); in run_method()
3019 process_non_start_term(instance, ret); in run_method()
3022 process_non_start_term(instance, IMRET_SUCCESS); in run_method()
3031 process_non_start_term(instance, IMRET_SUCCESS); in run_method()
3037 ret = iterate_repository_contracts(instance, sig); in run_method()
3042 instance->fmri, strerror(ret)); in run_method()
3045 process_non_start_term(instance, IMRET_SUCCESS); in run_method()
3051 ret = smf_kill_process(instance, sig); in run_method()
3052 process_non_start_term(instance, ret); in run_method()
3061 if ((mthd_ctxt = read_method_context(instance->fmri, in run_method()
3069 if (!passes_basic_exec_checks(instance->fmri, methods[method].name, in run_method()
3075 if (contract_prefork(instance->fmri, method) == -1) in run_method()
3085 methods[method].name, instance->fmri, strerror(serrno)); in run_method()
3090 exec_method(instance, method, mi, mthd_ctxt, start_info); in run_method()
3104 if (register_method(instance, child_pid, cid, method, in run_method()
3115 instance->fmri); in run_method()
3117 process_non_start_term(instance, IMRET_FAILURE); in run_method()
3120 add_method_ids(instance, child_pid, cid, method); in run_method()
3129 inet_ntop_native(instance->remote_addr.ss_family, in run_method()
3130 SS_SINADDR(instance->remote_addr), buf, in run_method()
3132 ntohs(SS_PORT(instance->remote_addr))); in run_method()
3150 destroy_bound_fds(instance); in run_method()
3151 update_state(instance, IIS_MAINTENANCE, RERR_FAULT); in run_method()
3155 process_non_start_term(instance, IMRET_FAILURE); in run_method()
3162 pending_connections(instance_t *instance, proto_info_t *pi) in pending_connections() argument
3164 if (instance->config->basic->istlx) { in pending_connections()
3174 accept_connection(instance_t *instance, proto_info_t *pi) in accept_connection() argument
3179 if (instance->config->basic->istlx) { in accept_connection()
3184 fd = tlx_accept(instance->fmri, (tlx_info_t *)pi, in accept_connection()
3185 &(instance->remote_addr)); in accept_connection()
3190 size = sizeof (instance->remote_addr); in accept_connection()
3192 (struct sockaddr *)&(instance->remote_addr), &size); in accept_connection()
3210 process_nowait_request(instance_t *instance, proto_info_t *pi) in process_nowait_request() argument
3212 basic_cfg_t *cfg = instance->config->basic; in process_nowait_request()
3218 if ((instance->conn_fd = accept_connection(instance, pi)) == -1) { in process_nowait_request()
3234 if (instance->conn_rate_count++ == 0) { in process_nowait_request()
3235 instance->conn_rate_start = time(NULL); in process_nowait_request()
3236 } else if (instance->conn_rate_count > in process_nowait_request()
3240 if ((now - instance->conn_rate_start) > 1) { in process_nowait_request()
3241 instance->conn_rate_start = now; in process_nowait_request()
3242 instance->conn_rate_count = 1; in process_nowait_request()
3271 instance->fmri, cfg->conn_rate_offline); in process_nowait_request()
3273 close_net_fd(instance, instance->conn_fd); in process_nowait_request()
3274 instance->conn_fd = -1; in process_nowait_request()
3276 destroy_bound_fds(instance); in process_nowait_request()
3278 instance->conn_rate_count = 0; in process_nowait_request()
3280 instance->conn_rate_exceeded = B_TRUE; in process_nowait_request()
3281 (void) run_method(instance, IM_OFFLINE, NULL); in process_nowait_request()
3288 ret = run_method(instance, IM_START, pi); in process_nowait_request()
3290 close_net_fd(instance, instance->conn_fd); in process_nowait_request()
3291 instance->conn_fd = -1; in process_nowait_request()
3296 instance->copies++; in process_nowait_request()
3301 if (copies_limit_exceeded(instance)) { in process_nowait_request()
3323 instance->fmri); in process_nowait_request()
3324 destroy_bound_fds(instance); in process_nowait_request()
3325 (void) run_method(instance, IM_OFFLINE, NULL); in process_nowait_request()
3336 process_wait_request(instance_t *instance, const proto_info_t *pi) in process_wait_request() argument
3338 basic_cfg_t *cfg = instance->config->basic; in process_wait_request()
3343 instance->conn_fd = pi->listen_fd; in process_wait_request()
3354 if (instance->fail_rate_count++ == 0) { in process_wait_request()
3355 instance->fail_rate_start = time(NULL); in process_wait_request()
3356 } else if (instance->fail_rate_count > cfg->wait_fail_cnt) { in process_wait_request()
3359 if ((now - instance->fail_rate_start) > in process_wait_request()
3361 instance->fail_rate_start = now; in process_wait_request()
3362 instance->fail_rate_count = 1; in process_wait_request()
3395 "maintenance"), instance->fmri); in process_wait_request()
3396 instance->fail_rate_count = 0; in process_wait_request()
3398 destroy_bound_fds(instance); in process_wait_request()
3400 instance->maintenance_req = B_TRUE; in process_wait_request()
3401 (void) run_method(instance, IM_OFFLINE, NULL); in process_wait_request()
3407 ret = run_method(instance, IM_START, pi); in process_wait_request()
3409 instance->conn_fd = -1; in process_wait_request()
3416 (void) poll_bound_fds(instance, B_FALSE, pi->proto); in process_wait_request()
3426 instance_t *instance; in process_network_events() local
3428 for (instance = uu_list_first(instance_list); instance != NULL; in process_network_events()
3429 instance = uu_list_next(instance_list, instance)) { in process_network_events()
3437 switch (instance->cur_istate) { in process_network_events()
3446 cfg = instance->config->basic; in process_network_events()
3452 pending_connections(instance, pi)) { in process_network_events()
3454 process_wait_request(instance, pi); in process_network_events()
3456 process_nowait_request(instance, pi); in process_network_events()
3490 instance_t *instance; in event_loop() local
3567 for (instance = uu_list_first(instance_list); in event_loop()
3568 instance != NULL; in event_loop()
3569 instance = uu_list_next(instance_list, instance)) { in event_loop()
3570 if (!instance_stopped(instance)) { in event_loop()
3572 instance->fmri); in event_loop()
3577 if (instance == NULL) in event_loop()