Print this page
OS-4018 lxbrand support TCP SO_REUSEPORT
Reviewed by: Robert Mustacchi <rm@joyent.com>
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
Reviewed by: Cody Mello <cody.mello@joyent.com>
        
@@ -18,11 +18,11 @@
  *
  * CDDL HEADER END
  */
 /*
  * Copyright (c) 1991, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2011, Joyent, Inc. All rights reserved.
+ * Copyright 2015 Joyent, Inc.
  * Copyright (c) 2011 Nexenta Systems, Inc. All rights reserved.
  * Copyright (c) 2014 by Delphix. All rights reserved.
  */
 /* Copyright (c) 1990 Mentat Inc. */
 
@@ -132,10 +132,11 @@
         uint16_t        tha_urp;        /* Urgent pointer */
 } tcpha_t;
 
 struct conn_s;
 struct tcp_listen_cnt_s;
+struct tcp_rg_s;
 
 /*
  * Control structure for each open TCP stream,
  * defined only within the kernel or for a kmem user.
  * NOTE: tcp_reinit_values MUST have a line for each field in this structure!
@@ -402,10 +403,17 @@
         struct tcp_s **tcp_ptpahn; /* Pointer to previous accept hash next. */
         struct tcp_s *tcp_bind_hash; /* Bind hash chain */
         struct tcp_s *tcp_bind_hash_port; /* tcp_t's bound to the same lport */
         struct tcp_s **tcp_ptpbhn;
 
+        /*
+         * Group of tcp_t entries bound to the same adress and port via
+         * SO_REUSEPORT.  The pointer itself is protected by tf_lock in the
+         * containing tcps_bind_fanout slot.
+         */
+        struct tcp_rg_s *tcp_rg_bind;
+
         uint_t          tcp_maxpsz_multiplier;
 
         uint32_t        tcp_lso_max; /* maximum LSO payload */
 
         uint32_t        tcp_ofo_fin_seq; /* Recv out of order FIN seq num */