Print this page
WIP to help bringup NAT flows

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/inet/udp/udp.c
          +++ new/usr/src/uts/common/inet/udp/udp.c
↓ open down ↓ 168 lines elided ↑ open up ↑
 169  169                      sin6_t *sin6, ushort_t ipversion, cred_t *cr, pid_t,
 170  170                      ip_xmit_attr_t *ixa);
 171  171  static mblk_t   *udp_prepend_hdr(conn_t *, ip_xmit_attr_t *, const ip_pkt_t *,
 172  172      const in6_addr_t *, const in6_addr_t *, in_port_t, uint32_t, mblk_t *,
 173  173      int *);
 174  174  static mblk_t   *udp_prepend_header_template(conn_t *, ip_xmit_attr_t *,
 175  175      mblk_t *, const in6_addr_t *, in_port_t, uint32_t, int *);
 176  176  static void     udp_ud_err(queue_t *q, mblk_t *mp, t_scalar_t err);
 177  177  static void     udp_ud_err_connected(conn_t *, t_scalar_t);
 178  178  static void     udp_tpi_unbind(queue_t *q, mblk_t *mp);
 179      -static in_port_t udp_update_next_port(udp_t *udp, in_port_t port,
 180      -    boolean_t random);
 181  179  static void     udp_wput_other(queue_t *q, mblk_t *mp);
 182  180  static void     udp_wput_iocdata(queue_t *q, mblk_t *mp);
 183  181  static void     udp_wput_fallback(queue_t *q, mblk_t *mp);
 184  182  static size_t   udp_set_rcv_hiwat(udp_t *udp, size_t size);
 185  183  
 186  184  static void     *udp_stack_init(netstackid_t stackid, netstack_t *ns);
 187  185  static void     udp_stack_fini(netstackid_t stackid, void *arg);
 188  186  
 189  187  /* Common routines for TPI and socket module */
 190  188  static void     udp_ulp_recv(conn_t *, mblk_t *, uint_t, ip_recv_attr_t *);
↓ open down ↓ 2455 lines elided ↑ open up ↑
2646 2644          qreply(q, mp);
2647 2645  }
2648 2646  
2649 2647  /*
2650 2648   * Don't let port fall into the privileged range.
2651 2649   * Since the extra privileged ports can be arbitrary we also
2652 2650   * ensure that we exclude those from consideration.
2653 2651   * us->us_epriv_ports is not sorted thus we loop over it until
2654 2652   * there are no changes.
2655 2653   */
2656      -static in_port_t
     2654 +in_port_t
2657 2655  udp_update_next_port(udp_t *udp, in_port_t port, boolean_t random)
2658 2656  {
2659 2657          int i, bump;
2660 2658          in_port_t nextport;
2661 2659          boolean_t restart = B_FALSE;
2662 2660          udp_stack_t *us = udp->udp_us;
2663 2661  
2664 2662          if (random && udp_random_anon_port != 0) {
2665 2663                  (void) random_get_pseudo_bytes((uint8_t *)&port,
2666 2664                      sizeof (in_port_t));
↓ open down ↓ 3951 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX