Lines Matching defs:udp

60 #include <netinet/udp.h>
109 * it is possible to I_PUSH "udp", but that results in pushing a passthrough
113 * reside in between /dev/ip and udp -- in fact, we never supported such
123 static void udp_bind_hash_insert(udp_fanout_t *uf, udp_t *udp);
124 static void udp_bind_hash_remove(udp_t *udp, boolean_t caller_holds_lock);
177 static in_port_t udp_update_next_port(udp_t *udp, in_port_t port,
182 static size_t udp_set_rcv_hiwat(udp_t *udp, size_t size);
218 * CL_INET_UDP_CONNECT(conn_t cp, udp_t *udp, boolean_t is_outgoing,
250 * We have separate open functions for the /dev/udp and /dev/udp6 devices.
281 /* For AF_INET aka /dev/udp */
305 T_INVALID, /* ETSU_size. udp does not support expedited data. */
306 T_INVALID, /* CDATA_size. udp does not support connect data. */
307 T_INVALID, /* DDATA_size. udp does not support disconnect data. */
311 T_CLTS, /* SERV_type. udp supports connection-less. */
321 T_INVALID, /* ETSU_size. udp does not support expedited data. */
322 T_INVALID, /* CDATA_size. udp does not support connect data. */
323 T_INVALID, /* DDATA_size. udp does not support disconnect data. */
327 T_CLTS, /* SERV_type. udp supports connection-less. */
427 udp_get_next_priv_port(udp_t *udp)
432 udp_stack_t *us = udp->udp_us;
444 (nextport = tsol_next_port(crgetzone(udp->udp_connp->conn_cred),
457 udp_bind_hash_remove(udp_t *udp, boolean_t caller_holds_lock)
461 udp_stack_t *us = udp->udp_us;
462 conn_t *connp = udp->udp_connp;
464 if (udp->udp_ptpbhn == NULL)
478 if (udp->udp_ptpbhn != NULL) {
479 udpnext = udp->udp_bind_hash;
481 udpnext->udp_ptpbhn = udp->udp_ptpbhn;
482 udp->udp_bind_hash = NULL;
484 *udp->udp_ptpbhn = udpnext;
485 udp->udp_ptpbhn = NULL;
493 udp_bind_hash_insert(udp_fanout_t *uf, udp_t *udp)
495 conn_t *connp = udp->udp_connp;
501 ASSERT(udp->udp_ptpbhn == NULL);
506 * If the new udp bound to the INADDR_ANY address
522 udpnext->udp_ptpbhn = &udp->udp_bind_hash;
524 udpnext->udp_ptpbhn = &udp->udp_bind_hash;
527 udp->udp_bind_hash = udpnext;
528 udp->udp_ptpbhn = udpp;
529 udpp[0] = udp;
554 udp_t *udp;
574 udp = connp->conn_udp;
582 if (udp->udp_state != TS_UNBND) {
584 "udp_bind: bad state, %u", udp->udp_state);
676 * This routine handles each T_CONN_REQ message passed to udp. It
814 udp_t *udp = connp->conn_udp;
817 if (udp->udp_recv_ipp.ipp_fields != 0)
818 ip_pkt_free(&udp->udp_recv_ipp);
826 ASSERT(udp->udp_connp == connp);
827 bzero(udp, sizeof (udp_t));
828 udp->udp_connp = connp;
834 udp_t *udp;
839 udp = connp->conn_udp;
840 us = udp->udp_us;
842 if (udp->udp_state != TS_DATA_XFER) {
856 udp->udp_state = TS_IDLE;
968 udp_t *udp = connp->conn_udp;
1064 if (udp->udp_state == TS_DATA_XFER) {
1074 udp->udp_delayed_error = error;
1075 *((sin_t *)&udp->udp_delayed_addr) = sin;
1092 if (udp->udp_state == TS_DATA_XFER) {
1102 udp->udp_delayed_error = error;
1103 *((sin6_t *)&udp->udp_delayed_addr) = sin6;
1135 udp_t *udp = connp->conn_udp;
1136 udp_stack_t *us = udp->udp_us;
1271 if (udp->udp_state == TS_DATA_XFER) {
1281 udp->udp_delayed_error = error;
1282 *((sin6_t *)&udp->udp_delayed_addr) = sin6;
1308 udp_t *udp = Q_TO_UDP(q);
1309 conn_t *connp = udp->udp_connp;
1337 if (udp->udp_state != TS_UNBND) {
1347 if (udp->udp_state == TS_DATA_XFER) {
1364 udp_copy_info(struct T_info_ack *tap, udp_t *udp)
1366 conn_t *connp = udp->udp_connp;
1373 tap->CURRENT_state = udp->udp_state;
1378 udp_do_capability_ack(udp_t *udp, struct T_capability_ack *tcap,
1384 udp_copy_info(&tcap->INFO_ack, udp);
1400 udp_t *udp = Q_TO_UDP(q);
1410 udp_do_capability_ack(udp, tcap, cap_bits1);
1423 udp_t *udp = Q_TO_UDP(q);
1430 udp_copy_info((struct T_info_ack *)mp->b_rptr, udp);
1434 /* For /dev/udp aka AF_INET open */
1449 * This is the open routine for udp. It allocates a udp_t structure for
1456 udp_t *udp;
1500 udp = connp->conn_udp;
1519 ASSERT(connp->conn_udp == udp);
1520 ASSERT(udp->udp_connp == connp);
1523 udp->udp_issocket = B_TRUE;
1534 udp_set_rcv_hiwat(udp, connp->conn_rcvbuf));
1559 udp_t *udp = Q_TO_UDP(q);
1560 udp_stack_t *us = udp->udp_us;
1600 udp_t *udp = connp->conn_udp;
1629 if (!(udp->udp_recv_ipp.ipp_fields &
1635 len = udp->udp_recv_ipp.ipp_ipv4_options_len;
1637 bcopy(udp->udp_recv_ipp.ipp_ipv4_options, ptr, len);
1646 *i1 = udp->udp_nat_t_endpoint;
1651 *i1 = udp->udp_rcvhdr ? 1 : 0;
1685 udp_t *udp = connp->conn_udp;
1686 udp_stack_t *us = udp->udp_us;
1777 udp->udp_nat_t_endpoint = onoff;
1786 udp->udp_rcvhdr = onoff;
1805 udp_t *udp = connp->conn_udp;
1809 udp_stack_t *us = udp->udp_us;
2029 if (udp->udp_nat_t_endpoint)
2070 udp_t *udp = connp->conn_udp;
2071 boolean_t insert_spi = udp->udp_nat_t_endpoint;
2174 udp_queue_fallback(udp_t *udp, mblk_t *mp)
2176 ASSERT(MUTEX_HELD(&udp->udp_recv_lock));
2177 if (IPCL_IS_NONSTR(udp->udp_connp)) {
2181 if (udp->udp_fallback_queue_head == NULL) {
2182 ASSERT(udp->udp_fallback_queue_tail == NULL);
2183 udp->udp_fallback_queue_head = mp;
2184 udp->udp_fallback_queue_tail = mp;
2186 ASSERT(udp->udp_fallback_queue_tail != NULL);
2187 udp->udp_fallback_queue_tail->b_next = mp;
2188 udp->udp_fallback_queue_tail = mp;
2207 udp_t *udp = connp->conn_udp;
2213 mutex_enter(&udp->udp_recv_lock);
2227 mutex_exit(&udp->udp_recv_lock);
2230 mp = udp_queue_fallback(udp, mp);
2231 mutex_exit(&udp->udp_recv_lock);
2236 ASSERT(MUTEX_NOT_HELD(&udp->udp_recv_lock));
2266 udp_t *udp;
2308 udp = connp->conn_udp;
2309 us = udp->udp_us;
2323 udp_ipv4_options_len = udp->udp_recv_ipp.ipp_ipv4_options_len;
2357 err = ip_find_hdr_v4((ipha_t *)rptr, &udp->udp_recv_ipp,
2518 * DTrace this UDP input as udp:::receive (this is for IPv4, IPv6 and
2522 void_ip_t *, rptr, udp_t *, udp, udpha_t *, udpha);
2525 if (!udp->udp_rcvhdr) {
2620 udp_update_next_port(udp_t *udp, in_port_t port, boolean_t random)
2625 udp_stack_t *us = udp->udp_us;
2679 (nextport = tsol_next_port(crgetzone(udp->udp_connp->conn_cred),
2699 udp_t *udp = connp->conn_udp;
2700 udp_stack_t *us = udp->udp_us;
2952 void_ip_t *, mp->b_rptr, udp_t *, udp, udpha_t *,
3002 udp_t *udp = connp->conn_udp;
3003 udp_stack_t *us = udp->udp_us;
3106 void_ip_t *, mp->b_rptr, udp_t *, udp, udpha_t *,
3143 udp_t *udp = connp->conn_udp;
3144 udp_stack_t *us = udp->udp_us;
3236 void_ip_t *, mp->b_rptr, udp_t *, udp, udpha_t *,
3289 udp_t *udp = connp->conn_udp;
3290 udp_stack_t *us = udp->udp_us;
3291 boolean_t insert_spi = udp->udp_nat_t_endpoint;
3456 * Also entry point for sockfs when udp is in "direct sockfs" mode. This mode
3469 udp_t *udp = connp->conn_udp;
3473 udp_stack_t *us = udp->udp_us;
3487 if (!udp->udp_issocket || udp->udp_state != TS_DATA_XFER) {
3508 ASSERT(udp->udp_issocket);
3570 if (udp->udp_state == TS_UNBND) {
3642 if (udp->udp_state == TS_DATA_XFER &&
3705 if (udp->udp_state == TS_DATA_XFER &&
3776 udp_t *udp = connp->conn_udp;
3779 udp_stack_t *us = udp->udp_us;
3807 if (udp->udp_state == TS_DATA_XFER) {
3934 if (udp->udp_state == TS_DATA_XFER) {
4045 void_ip_t *, data_mp->b_rptr, udp_t *, udp, udpha_t *,
4116 udp_t *udp = connp->conn_udp;
4129 if (udp->udp_state != TS_DATA_XFER)
4148 udp_use_pure_tpi(udp_t *udp)
4150 conn_t *connp = udp->udp_connp;
4153 udp->udp_issocket = B_FALSE;
4155 UDP_STAT(udp->udp_us, udp_sock_fallback);
4164 udp_t *udp = connp->conn_udp;
4251 /* The following TPI message is not supported by udp. */
4257 /* The following 3 TPI requests are illegal for udp. */
4275 if (udp->udp_state != TS_DATA_XFER) {
4305 if (!udp->udp_issocket) {
4309 udp_use_pure_tpi(udp);
4344 udp_t *udp = connp->conn_udp;
4406 if (udp->udp_state != TS_DATA_XFER) {
4561 udp_set_rcv_hiwat(udp_t *udp, size_t size)
4563 udp_stack_t *us = udp->udp_us;
4570 udp->udp_rcv_hiwat = size;
4632 udp_t *udp;
4666 udp = connp->conn_udp;
4679 ASSERT(connp->conn_udp == udp);
4680 ASSERT(udp->udp_connp == connp);
4683 udp->udp_state = TS_UNBND;
4718 udp->udp_us = us;
4741 *((sin6_t *)&udp->udp_delayed_addr) = sin6_null;
4753 udp_t *udp = NULL;
4773 udp = connp->conn_udp;
4774 ASSERT(udp != NULL);
4775 us = udp->udp_us;
4778 udp->udp_issocket = B_TRUE;
4786 (void) udp_set_rcv_hiwat(udp, connp->conn_rcvbuf);
4787 udp->udp_rcv_disply_hiwat = connp->conn_rcvbuf;
4835 udp_t *udp;
4838 udp = connp->conn_udp;
4840 if (cl_inet_unbind != NULL && udp->udp_state == TS_IDLE) {
4859 udp_bind_hash_remove(udp, B_FALSE);
4915 udp_t *udp = connp->conn_udp;
4931 udp_stack_t *us = udp->udp_us;
5009 port = udp_get_next_priv_port(udp);
5011 port = udp_update_next_port(udp,
5062 if (udp->udp_state != TS_UNBND) {
5069 "udp_bind: bad state, %u", udp->udp_state);
5073 * Copy the source address into our udp structure. This address
5075 * each time an outbound packet is passed to it. Since the udp is
5138 * Walk through the list of udp streams bound to
5337 port = udp_get_next_priv_port(udp);
5346 port = udp_update_next_port(udp,
5350 port = udp_update_next_port(udp, port + 1,
5367 * Copy the source address into our udp structure. This address
5416 udp->udp_state = TS_IDLE;
5417 udp_bind_hash_insert(udpf, udp);
5574 udp->udp_state = TS_UNBND;
5575 udp_bind_hash_remove(udp, B_TRUE);
5657 udp_t *udp = connp->conn_udp;
5659 udp_stack_t *us = udp->udp_us;
5682 if (udp->udp_state == TS_UNBND) {
5689 udp_bind_hash_remove(udp, B_TRUE);
5702 udp->udp_state = TS_UNBND;
5727 udp_t *udp, *udp1;
5739 udp = connp->conn_udp;
5740 us = udp->udp_us;
5822 if (udp->udp_state == TS_UNBND || udp->udp_state == TS_WCON_CREQ) {
5825 "udp_connect: bad state, %u", udp->udp_state);
5829 ASSERT(connp->conn_lport != 0 && udp->udp_ptpbhn != NULL);
5835 if (udp->udp_state == TS_DATA_XFER) {
5844 udp->udp_state = TS_IDLE;
5914 udp->udp_state = TS_WCON_CREQ;
5937 udp->udp_state = TS_DATA_XFER;
5962 if (udp1 == udp)
5997 udp->udp_state = TS_IDLE;
6022 udp_t *udp = connp->conn_udp;
6035 if (udp->udp_state != TS_DATA_XFER)
6047 if (udp->udp_state == TS_UNBND) {
6081 if (error != 0 && udp->udp_state == TS_DATA_XFER) {
6087 udp->udp_state = TS_IDLE;
6100 udp_t *udp = connp->conn_udp;
6102 udp_stack_t *us = udp->udp_us;
6113 if (udp->udp_state == TS_UNBND) {
6128 if (udp->udp_state != TS_DATA_XFER) {
6143 if (udp->udp_state == TS_DATA_XFER) {
6221 if (udp->udp_delayed_error != 0) {
6222 sin6_t *sin2 = (sin6_t *)&udp->udp_delayed_addr;
6224 error = udp->udp_delayed_error;
6225 udp->udp_delayed_error = 0;
6284 if (udp->udp_delayed_error != 0) {
6285 sin_t *sin2 = (sin_t *)&udp->udp_delayed_addr;
6287 error = udp->udp_delayed_error;
6288 udp->udp_delayed_error = 0;
6331 udp_t *udp;
6340 udp = connp->conn_udp;
6363 stropt->so_hiwat = udp->udp_rcv_disply_hiwat;
6372 udp_use_pure_tpi(udp);
6377 udp_do_capability_ack(udp, &tca, TC1_INFO);
6397 mutex_enter(&udp->udp_recv_lock);
6404 mp->b_next = udp->udp_fallback_queue_head;
6405 udp->udp_fallback_queue_head = mp;
6407 while (udp->udp_fallback_queue_head != NULL) {
6408 mp = udp->udp_fallback_queue_head;
6409 udp->udp_fallback_queue_head = mp->b_next;
6410 mutex_exit(&udp->udp_recv_lock);
6413 mutex_enter(&udp->udp_recv_lock);
6415 udp->udp_fallback_queue_tail = udp->udp_fallback_queue_head;
6423 mutex_exit(&udp->udp_recv_lock);
6436 udp_t *udp = connp->conn_udp;
6443 if (udp->udp_state != TS_DATA_XFER)
6544 udp_t *udp = connp->conn_udp;
6546 mutex_enter(&udp->udp_recv_lock);
6548 mutex_exit(&udp->udp_recv_lock);