Lines Matching refs:dsmp

155 init_pkt(dhcp_smach_t *dsmp, uchar_t type)  in init_pkt()  argument
157 dhcp_pkt_t *dpkt = &dsmp->dsm_send_pkt; in init_pkt()
158 dhcp_lif_t *lif = dsmp->dsm_lif; in init_pkt()
206 if (dsmp->dsm_cidlen > 0 && in init_pkt()
207 add_pkt_opt(dpkt, DHCPV6_OPT_CLIENTID, dsmp->dsm_cid, in init_pkt()
208 dsmp->dsm_cidlen) == NULL) { in init_pkt()
215 dsmp->dsm_neg_hrtime = gethrtime(); in init_pkt()
216 dsmp->dsm_newstart_monosec = monosec(); in init_pkt()
254 !is_bound_state(dsmp->dsm_state))) in init_pkt()
268 if (dsmp->dsm_cidlen > 0 && in init_pkt()
269 add_pkt_opt(dpkt, CD_CLIENT_ID, dsmp->dsm_cid, in init_pkt()
270 dsmp->dsm_cidlen) == NULL) { in init_pkt()
589 add_pkt_prl(dhcp_pkt_t *dpkt, dhcp_smach_t *dsmp) in add_pkt_prl() argument
593 if (dsmp->dsm_prllen == 0) in add_pkt_prl()
603 if (dsmp->dsm_prllen == 0) in add_pkt_prl()
606 prl = alloca(dsmp->dsm_prllen * sizeof (uint16_t)); in add_pkt_prl()
608 for (len = 0; len < dsmp->dsm_prllen; len++) in add_pkt_prl()
609 prl[len] = htons(dsmp->dsm_prl[len]); in add_pkt_prl()
613 uint8_t *prl = alloca(dsmp->dsm_prllen); in add_pkt_prl()
615 for (len = 0; len < dsmp->dsm_prllen; len++) in add_pkt_prl()
616 prl[len] = dsmp->dsm_prl[len]; in add_pkt_prl()
636 dhcp_smach_t *dsmp; in add_pkt_lif() local
649 dsmp = lif->lif_lease->dl_smach; in add_pkt_lif()
650 iaid = dsmp->dsm_lif->lif_iaid; in add_pkt_lif()
797 send_pkt_internal(dhcp_smach_t *dsmp) in send_pkt_internal() argument
800 dhcp_lif_t *lif = dsmp->dsm_lif; in send_pkt_internal()
801 dhcp_pkt_t *dpkt = &dsmp->dsm_send_pkt; in send_pkt_internal()
814 if (dsmp->dsm_retrans_timer != -1) { in send_pkt_internal()
816 "timer on %s", dsmp->dsm_name); in send_pkt_internal()
817 stop_pkt_retransmission(dsmp); in send_pkt_internal()
830 if (dsmp->dsm_send_timeout != 0) { in send_pkt_internal()
831 if ((dsmp->dsm_retrans_timer = iu_schedule_timer_ms(tq, in send_pkt_internal()
832 dsmp->dsm_send_timeout, retransmit, dsmp)) == -1) in send_pkt_internal()
837 hold_smach(dsmp); in send_pkt_internal()
848 delta = (gethrtime() - dsmp->dsm_neg_hrtime) / in send_pkt_internal()
878 dsmp->dsm_newstart_monosec = monosec(); in send_pkt_internal()
879 dsmp->dsm_disc_secs = dsmp->dsm_newstart_monosec - in send_pkt_internal()
880 hrtime_to_monosec(dsmp->dsm_neg_hrtime); in send_pkt_internal()
881 dpkt->pkt->secs = htons(dsmp->dsm_disc_secs); in send_pkt_internal()
886 hrtime_to_monosec(dsmp->dsm_neg_hrtime)); in send_pkt_internal()
890 dsmp->dsm_newstart_monosec = monosec(); in send_pkt_internal()
892 if (dsmp->dsm_state == REQUESTING) { in send_pkt_internal()
893 dpkt->pkt->secs = htons(dsmp->dsm_disc_secs); in send_pkt_internal()
898 hrtime_to_monosec(dsmp->dsm_neg_hrtime)); in send_pkt_internal()
915 msg.msg_name = &dsmp->dsm_send_dest.v6; in send_pkt_internal()
924 if (IN6_IS_ADDR_MULTICAST(&dsmp->dsm_send_dest.v6.sin6_addr)) { in send_pkt_internal()
932 dinfo.dir_daddr = dsmp->dsm_send_dest.v6.sin6_addr; in send_pkt_internal()
947 sin6 = dsmp->dsm_send_dest.v6; in send_pkt_internal()
987 (struct sockaddr *)&dsmp->dsm_send_dest.v4, in send_pkt_internal()
993 if (dsmp->dsm_retrans_timer == -1) in send_pkt_internal()
999 pkt_name, dsmp->dsm_send_timeout / MILLISEC); in send_pkt_internal()
1004 pkt_get_xid(dpkt->pkt, dpkt->pkt_isv6), dsmp->dsm_name); in send_pkt_internal()
1006 dsmp->dsm_packet_sent++; in send_pkt_internal()
1007 dsmp->dsm_sent++; in send_pkt_internal()
1024 send_pkt(dhcp_smach_t *dsmp, dhcp_pkt_t *dpkt, in_addr_t dest, in send_pkt() argument
1034 dsmp->dsm_packet_sent = 0; in send_pkt()
1036 (void) memset(&dsmp->dsm_send_dest.v4, 0, in send_pkt()
1037 sizeof (dsmp->dsm_send_dest.v4)); in send_pkt()
1038 dsmp->dsm_send_dest.v4.sin_addr.s_addr = dest; in send_pkt()
1039 dsmp->dsm_send_dest.v4.sin_family = AF_INET; in send_pkt()
1040 dsmp->dsm_send_dest.v4.sin_port = htons(IPPORT_BOOTPS); in send_pkt()
1041 dsmp->dsm_send_stop_func = stop; in send_pkt()
1048 assert(dpkt == &dsmp->dsm_send_pkt); in send_pkt()
1055 free_pkt_list(&dsmp->dsm_recv_pkt_list); in send_pkt()
1058 dsmp->dsm_send_timeout = 0; /* prevents retransmissions */ in send_pkt()
1060 next_retransmission(dsmp, B_TRUE, B_FALSE); in send_pkt()
1062 return (send_pkt_internal(dsmp)); in send_pkt()
1080 send_pkt_v6(dhcp_smach_t *dsmp, dhcp_pkt_t *dpkt, in6_addr_t dest, in send_pkt_v6() argument
1083 dsmp->dsm_packet_sent = 0; in send_pkt_v6()
1085 (void) memset(&dsmp->dsm_send_dest.v6, 0, in send_pkt_v6()
1086 sizeof (dsmp->dsm_send_dest.v6)); in send_pkt_v6()
1087 dsmp->dsm_send_dest.v6.sin6_addr = dest; in send_pkt_v6()
1088 dsmp->dsm_send_dest.v6.sin6_family = AF_INET6; in send_pkt_v6()
1089 dsmp->dsm_send_dest.v6.sin6_port = htons(IPPORT_DHCPV6S); in send_pkt_v6()
1090 dsmp->dsm_send_stop_func = stop; in send_pkt_v6()
1097 assert(dpkt == &dsmp->dsm_send_pkt); in send_pkt_v6()
1104 free_pkt_list(&dsmp->dsm_recv_pkt_list); in send_pkt_v6()
1107 dsmp->dsm_send_timeout = 0; /* prevents retransmissions */ in send_pkt_v6()
1109 dsmp->dsm_send_timeout = irt; in send_pkt_v6()
1110 dsmp->dsm_send_tcenter = mrt; in send_pkt_v6()
1116 next_retransmission(dsmp, B_TRUE, in send_pkt_v6()
1120 return (send_pkt_internal(dsmp)); in send_pkt_v6()
1135 dhcp_smach_t *dsmp = arg; in retransmit() local
1137 dsmp->dsm_retrans_timer = -1; in retransmit()
1139 if (!verify_smach(dsmp)) in retransmit()
1154 next_retransmission(dsmp, B_FALSE, B_FALSE); in retransmit()
1155 hold_smach(dsmp); in retransmit()
1156 if (dsmp->dsm_send_stop_func(dsmp, dsmp->dsm_packet_sent)) { in retransmit()
1158 dsmp->dsm_name); in retransmit()
1161 dsmp->dsm_name); in retransmit()
1162 (void) send_pkt_internal(dsmp); in retransmit()
1164 release_smach(dsmp); in retransmit()
1175 stop_pkt_retransmission(dhcp_smach_t *dsmp) in stop_pkt_retransmission() argument
1177 if (dsmp->dsm_retrans_timer != -1 && in stop_pkt_retransmission()
1178 iu_cancel_timer(tq, dsmp->dsm_retrans_timer, NULL) == 1) { in stop_pkt_retransmission()
1180 dsmp->dsm_name); in stop_pkt_retransmission()
1181 dsmp->dsm_retrans_timer = -1; in stop_pkt_retransmission()
1182 release_smach(dsmp); in stop_pkt_retransmission()
1196 retransmit_now(dhcp_smach_t *dsmp) in retransmit_now() argument
1198 stop_pkt_retransmission(dsmp); in retransmit_now()
1199 (void) send_pkt_internal(dsmp); in retransmit_now()
1413 pkt_smach_enqueue(dhcp_smach_t *dsmp, PKT_LIST *plp) in pkt_smach_enqueue() argument
1416 pkt_type_to_string(pkt_recv_type(plp), dsmp->dsm_isv6), in pkt_smach_enqueue()
1417 dsmp->dsm_isv6 ? "v6" : "v4", dsmp->dsm_name); in pkt_smach_enqueue()
1420 insque(plp, &dsmp->dsm_recv_pkt_list); in pkt_smach_enqueue()
1435 next_retransmission(dhcp_smach_t *dsmp, boolean_t first_send, in next_retransmission() argument
1440 if (dsmp->dsm_isv6) { in next_retransmission()
1455 timeout_ms = dsmp->dsm_send_timeout; in next_retransmission()
1458 timeout_ms += (int)(randval * dsmp->dsm_send_timeout); in next_retransmission()
1461 if (dsmp->dsm_send_tcenter != 0 && in next_retransmission()
1462 timeout_ms > dsmp->dsm_send_tcenter) { in next_retransmission()
1463 timeout_ms = dsmp->dsm_send_tcenter + in next_retransmission()
1464 (uint_t)(randval * dsmp->dsm_send_tcenter); in next_retransmission()
1467 dsmp->dsm_send_timeout = timeout_ms; in next_retransmission()
1469 if (dsmp->dsm_state == RENEWING || in next_retransmission()
1470 dsmp->dsm_state == REBINDING) { in next_retransmission()
1473 timeout_ms = dsmp->dsm_state == RENEWING ? in next_retransmission()
1474 dsmp->dsm_leases->dl_t2.dt_start : in next_retransmission()
1475 dsmp->dsm_leases->dl_lifs->lif_expire.dt_start; in next_retransmission()
1476 timeout_ms += dsmp->dsm_curstart_monosec; in next_retransmission()
1490 timeout_ms = MIN(dsmp->dsm_send_tcenter << 1, in next_retransmission()
1495 dsmp->dsm_send_tcenter = timeout_ms; in next_retransmission()
1501 dsmp->dsm_send_timeout = timeout_ms + in next_retransmission()