Lines Matching refs:dsmp
76 static void dhcp_smach_set_msg_reqhost(dhcp_smach_t *dsmp,
78 static DHCP_OPT * dhcp_get_ack_or_state(const dhcp_smach_t *dsmp,
452 dhcp_smach_t *dsmp; in ipc_event() local
469 if ((dsmp = lookup_smach_by_event(id)) != NULL) { in ipc_event()
470 ipc_action_finish(dsmp, error); in ipc_event()
515 dsmp = primary_smach(isv6); in ipc_event()
517 dsmp = lookup_smach(ifname, isv6); in ipc_event()
519 if (dsmp != NULL) { in ipc_event()
521 hold_smach(dsmp); in ipc_event()
522 if (!verify_smach(dsmp)) in ipc_event()
523 dsmp = NULL; in ipc_event()
526 if (dsmp == NULL) { in ipc_event()
535 dsmp = info_primary_smach(isv6); in ipc_event()
536 if (dsmp == NULL) in ipc_event()
549 (dsmp = insert_smach(lif, &error)) != NULL) { in ipc_event()
554 error = get_smach_cid(dsmp); in ipc_event()
556 remove_smach(dsmp); in ipc_event()
557 dsmp = NULL; in ipc_event()
559 dsm_created = (dsmp != NULL); in ipc_event()
568 if (dsmp == NULL) { in ipc_event()
580 (error = set_lif_dhcp(dsmp->dsm_lif)) != DHCP_IPC_SUCCESS) { in ipc_event()
582 remove_smach(dsmp); in ipc_event()
587 if ((dsmp->dsm_dflags & DHCP_IF_BOOTP) && in ipc_event()
590 dhcp_ipc_type_to_string(ia.ia_cmd), dsmp->dsm_name); in ipc_event()
601 if (!check_cmd_allowed(dsmp->dsm_state, ia.ia_cmd)) { in ipc_event()
604 dhcp_state_to_string(dsmp->dsm_state), in ipc_event()
605 dhcp_ipc_type_to_string(ia.ia_cmd), dsmp->dsm_name); in ipc_event()
607 ia.ia_cmd == DHCP_START && dsmp->dsm_state != INIT ? in ipc_event()
613 dhcp_state_to_string(dsmp->dsm_state), in ipc_event()
614 dhcp_ipc_type_to_string(ia.ia_cmd), dsmp->dsm_name); in ipc_event()
617 make_primary(dsmp); in ipc_event()
728 if (dsmp->dsm_dflags & DHCP_IF_BUSY) { in ipc_event()
733 if (!ipc_action_start(dsmp, &ia)) { in ipc_event()
735 "failed for %s", dsmp->dsm_name); in ipc_event()
741 iap = &dsmp->dsm_ia; in ipc_event()
747 if (dsmp->dsm_droprelease) in ipc_event()
749 dsmp->dsm_droprelease = B_TRUE; in ipc_event()
758 cancel_smach_timers(dsmp); in ipc_event()
759 (void) script_start(dsmp, isv6 ? EVENT_DROP6 : EVENT_DROP, in ipc_event()
764 dhcp_smach_set_msg_reqhost(dsmp, iap); in ipc_event()
765 (void) dhcp_extending(dsmp); in ipc_event()
773 PKT_LIST *ack = dsmp->dsm_ack; in ipc_event()
794 for (i = 0; i < dsmp->dsm_pillen; i++) { in ipc_event()
795 if (dsmp->dsm_pil[i] == optnum.code) in ipc_event()
798 if (i < dsmp->dsm_pillen) in ipc_event()
804 opt = dhcp_get_ack_or_state(dsmp, ack, in ipc_event()
930 } else if (ack != dsmp->dsm_orig_ack) { in ipc_event()
936 ack = dsmp->dsm_orig_ack; in ipc_event()
953 dhcp_inform(dsmp); in ipc_event()
958 if (dsmp->dsm_dflags & DHCP_IF_FAILED) in ipc_event()
965 if (dsmp->dsm_droprelease) in ipc_event()
967 dsmp->dsm_droprelease = B_TRUE; in ipc_event()
968 cancel_smach_timers(dsmp); /* see comment in DHCP_DROP above */ in ipc_event()
969 (void) script_start(dsmp, isv6 ? EVENT_RELEASE6 : in ipc_event()
977 deprecate_leases(dsmp); in ipc_event()
978 dhcp_smach_set_msg_reqhost(dsmp, iap); in ipc_event()
986 error = read_hostconf(dsmp->dsm_name, plp, 2, dsmp->dsm_isv6); in ipc_event()
1001 dsmp->dsm_orig_ack = oack; in ipc_event()
1002 dsmp->dsm_ack = ack; in ipc_event()
1003 dhcp_init_reboot(dsmp); in ipc_event()
1013 if (debug_level != 0 || !set_start_timer(dsmp)) { in ipc_event()
1014 dhcp_selecting(dsmp); in ipc_event()
1025 status.if_began = monosec_to_time(dsmp->dsm_curstart_monosec); in ipc_event()
1032 dlp = dsmp->dsm_leases; in ipc_event()
1049 status.if_state = dsmp->dsm_state; in ipc_event()
1050 status.if_dflags = dsmp->dsm_dflags; in ipc_event()
1051 status.if_sent = dsmp->dsm_sent; in ipc_event()
1052 status.if_recv = dsmp->dsm_received; in ipc_event()
1053 status.if_bad_offers = dsmp->dsm_bad_offers; in ipc_event()
1055 (void) strlcpy(status.if_name, dsmp->dsm_name, LIFNAMSIZ); in ipc_event()
1074 dhcp_smach_set_msg_reqhost(dhcp_smach_t *dsmp, ipc_action_t *iap) in dhcp_smach_set_msg_reqhost() argument
1080 if (dsmp->dsm_msg_reqhost != NULL) { in dhcp_smach_set_msg_reqhost()
1083 dsmp->dsm_msg_reqhost); in dhcp_smach_set_msg_reqhost()
1084 free(dsmp->dsm_msg_reqhost); in dhcp_smach_set_msg_reqhost()
1085 dsmp->dsm_msg_reqhost = NULL; in dhcp_smach_set_msg_reqhost()
1094 if (dsmp->dsm_isv6) { in dhcp_smach_set_msg_reqhost()
1144 free(dsmp->dsm_msg_reqhost); in dhcp_smach_set_msg_reqhost()
1145 dsmp->dsm_msg_reqhost = value; in dhcp_smach_set_msg_reqhost()
1163 dhcp_get_ack_or_state(const dhcp_smach_t *dsmp, const PKT_LIST *plp, in dhcp_get_ack_or_state() argument
1186 if (dsmp->dsm_cidlen > 0) { in dhcp_get_ack_or_state()
1187 if ((opt = malloc(dsmp->dsm_cidlen + DHCP_OPT_META_LEN)) in dhcp_get_ack_or_state()
1192 dsmp->dsm_cid, dsmp->dsm_cidlen); in dhcp_get_ack_or_state()
1398 check_main_lif(dhcp_smach_t *dsmp, const struct ifa_msghdr *ifam, int msglen) in check_main_lif() argument
1400 dhcp_lif_t *lif = dsmp->dsm_lif; in check_main_lif()
1504 dhcp_smach_t *dsmp, *dsmnext; in rtsock_event() local
1529 for (dsmp = lookup_smach_by_uindex(ifindex, NULL, isv6); in rtsock_event()
1530 dsmp != NULL; dsmp = dsmnext) { in rtsock_event()
1540 dsmnext = lookup_smach_by_uindex(ifindex, dsmp, isv6); in rtsock_event()
1541 oldstate = dsmp->dsm_state; in rtsock_event()
1547 if (dsmp->dsm_droprelease) in rtsock_event()
1555 process_link_up_down(dsmp->dsm_lif->lif_pif, &msg.ifm); in rtsock_event()
1568 for (dlp = dsmp->dsm_leases; dlp != NULL; dlp = dlnext) { in rtsock_event()
1577 dsmp->dsm_lif_wait--; in rtsock_event()
1587 if ((isv6 && !check_main_lif(dsmp, &msg.ifam, msglen)) || in rtsock_event()
1588 (!isv6 && !verify_lif(dsmp->dsm_lif))) { in rtsock_event()
1589 finished_smach(dsmp, DHCP_IPC_E_INVIF); in rtsock_event()
1597 if (!lif_finished && dsmp->dsm_lif_down == 0 && in rtsock_event()
1598 (dsmp->dsm_leases != NULL || !lease_removed)) in rtsock_event()
1605 if (dsmp->dsm_lif_wait != 0) { in rtsock_event()
1607 "LIFs waiting on DAD", dsmp->dsm_name, in rtsock_event()
1608 dsmp->dsm_lif_wait); in rtsock_event()
1617 if (dsmp->dsm_lif_down != 0) in rtsock_event()
1618 send_declines(dsmp); in rtsock_event()
1620 if (dsmp->dsm_leases == NULL) { in rtsock_event()
1621 dsmp->dsm_bad_offers++; in rtsock_event()
1629 if (!dsmp->dsm_isv6) { in rtsock_event()
1631 "LIFs left", dsmp->dsm_name); in rtsock_event()
1632 dhcp_restart(dsmp); in rtsock_event()
1641 "on %s in %s state", dsmp->dsm_name, in rtsock_event()
1645 dhcp_bound_complete(dsmp); in rtsock_event()
1647 dhcp_adopt_complete(dsmp); in rtsock_event()