Make MSS clamping configurable, but enabled by default.
[tinc] / src / connection.h
index 087d8f0..d5c14bd 100644 (file)
@@ -1,6 +1,6 @@
 /*
     connection.h -- header for connection.c
-    Copyright (C) 2000-2006 Guus Sliepen <guus@tinc-vpn.org>,
+    Copyright (C) 2000-2009 Guus Sliepen <guus@tinc-vpn.org>,
                   2000-2005 Ivo Timmermans
 
     This program is free software; you can redistribute it and/or modify
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     GNU General Public License for more details.
 
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-    $Id$
+    You should have received a copy of the GNU General Public License along
+    with this program; if not, write to the Free Software Foundation, Inc.,
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */
 
 #ifndef __TINC_CONNECTION_H__
 #define OPTION_INDIRECT                0x0001
 #define OPTION_TCPONLY         0x0002
 #define OPTION_PMTU_DISCOVERY  0x0004
-
-typedef union connection_status_t {
-       struct {
-               int pinged:1;                           /* sent ping */
-               int active:1;                           /* 1 if active.. */
-               int connecting:1;                       /* 1 if we are waiting for a non-blocking connect() to finish */
-               int termreq:1;                          /* the termination of this connection was requested */
-               int remove:1;                           /* Set to 1 if you want this connection removed */
-               int timeout:1;                          /* 1 if gotten timeout */
-               int encryptout:1;                       /* 1 if we can encrypt outgoing traffic */
-               int decryptin:1;                        /* 1 if we have to decrypt incoming traffic */
-               int mst:1;                              /* 1 if this connection is part of a minimum spanning tree */
-               int unused:23;
-       };
-       uint32_t value;
+#define OPTION_CLAMP_MSS       0x0008
+
+typedef struct connection_status_t {
+       int pinged:1;                           /* sent ping */
+       int active:1;                           /* 1 if active.. */
+       int connecting:1;                       /* 1 if we are waiting for a non-blocking connect() to finish */
+       int termreq:1;                          /* the termination of this connection was requested */
+       int remove:1;                           /* Set to 1 if you want this connection removed */
+       int timeout:1;                          /* 1 if gotten timeout */
+       int encryptout:1;                       /* 1 if we can encrypt outgoing traffic */
+       int decryptin:1;                        /* 1 if we have to decrypt incoming traffic */
+       int mst:1;                              /* 1 if this connection is part of a minimum spanning tree */
+       int unused:23;
 } connection_status_t;
 
 #include "edge.h"
@@ -61,7 +57,7 @@ typedef struct connection_t {
        int protocol_version;           /* used protocol */
 
        int socket;                                     /* socket used for this connection */
-       long int options;                       /* options for this connection */
+       uint32_t options;                       /* options for this connection */
        connection_status_t status;     /* status info */
        int estimated_weight;           /* estimation for the weight of the edge for this connection */
        struct timeval start;           /* time this connection was started, used for above estimation */