فهرست منبع

Merge pull request #217 from skyfloogle/ttl

Add ENET_SOCKOPT_TTL
Lee Salzman 2 سال پیش
والد
کامیت
bb788ea48b
3فایلهای تغییر یافته به همراه21 افزوده شده و 1 حذف شده
  1. 2 1
      include/enet/enet.h
  2. 9 0
      unix.c
  3. 10 0
      win32.c

+ 2 - 1
include/enet/enet.h

@@ -62,7 +62,8 @@ typedef enum _ENetSocketOption
    ENET_SOCKOPT_RCVTIMEO  = 6,
    ENET_SOCKOPT_RCVTIMEO  = 6,
    ENET_SOCKOPT_SNDTIMEO  = 7,
    ENET_SOCKOPT_SNDTIMEO  = 7,
    ENET_SOCKOPT_ERROR     = 8,
    ENET_SOCKOPT_ERROR     = 8,
-   ENET_SOCKOPT_NODELAY   = 9
+   ENET_SOCKOPT_NODELAY   = 9,
+   ENET_SOCKOPT_TTL       = 10
 } ENetSocketOption;
 } ENetSocketOption;
 
 
 typedef enum _ENetSocketShutdown
 typedef enum _ENetSocketShutdown

+ 9 - 0
unix.c

@@ -348,6 +348,10 @@ enet_socket_set_option (ENetSocket socket, ENetSocketOption option, int value)
             result = setsockopt (socket, IPPROTO_TCP, TCP_NODELAY, (char *) & value, sizeof (int));
             result = setsockopt (socket, IPPROTO_TCP, TCP_NODELAY, (char *) & value, sizeof (int));
             break;
             break;
 
 
+        case ENET_SOCKOPT_TTL:
+            result = setsockopt (socket, IPPROTO_IP, IP_TTL, (char *) & value, sizeof (int));
+            break;
+
         default:
         default:
             break;
             break;
     }
     }
@@ -366,6 +370,11 @@ enet_socket_get_option (ENetSocket socket, ENetSocketOption option, int * value)
             result = getsockopt (socket, SOL_SOCKET, SO_ERROR, value, & len);
             result = getsockopt (socket, SOL_SOCKET, SO_ERROR, value, & len);
             break;
             break;
 
 
+        case ENET_SOCKOPT_TTL:
+            len = sizeof (int);
+            result = getsockopt (socket, IPPROTO_IP, IP_TTL, (char *) value, & len);
+            break;
+
         default:
         default:
             break;
             break;
     }
     }

+ 10 - 0
win32.c

@@ -8,6 +8,7 @@
 #include "enet/enet.h"
 #include "enet/enet.h"
 #include <windows.h>
 #include <windows.h>
 #include <mmsystem.h>
 #include <mmsystem.h>
+#include <ws2ipdef.h>
 
 
 static enet_uint32 timeBase = 0;
 static enet_uint32 timeBase = 0;
 
 
@@ -231,6 +232,10 @@ enet_socket_set_option (ENetSocket socket, ENetSocketOption option, int value)
             result = setsockopt (socket, IPPROTO_TCP, TCP_NODELAY, (char *) & value, sizeof (int));
             result = setsockopt (socket, IPPROTO_TCP, TCP_NODELAY, (char *) & value, sizeof (int));
             break;
             break;
 
 
+        case ENET_SOCKOPT_TTL:
+            result = setsockopt (socket, IPPROTO_IP, IP_TTL, (char *) & value, sizeof (int));
+            break;
+
         default:
         default:
             break;
             break;
     }
     }
@@ -248,6 +253,11 @@ enet_socket_get_option (ENetSocket socket, ENetSocketOption option, int * value)
             result = getsockopt (socket, SOL_SOCKET, SO_ERROR, (char *) value, & len);
             result = getsockopt (socket, SOL_SOCKET, SO_ERROR, (char *) value, & len);
             break;
             break;
 
 
+        case ENET_SOCKOPT_TTL:
+            len = sizeof(int);
+            result = getsockopt (socket, IPPROTO_IP, IP_TTL, (char *) value, & len);
+            break;
+
         default:
         default:
             break;
             break;
     }
     }