diff options
Diffstat (limited to 'core/network.c')
-rw-r--r-- | core/network.c | 56 |
1 files changed, 28 insertions, 28 deletions
diff --git a/core/network.c b/core/network.c index c08b3512..dbe4574c 100644 --- a/core/network.c +++ b/core/network.c | |||
@@ -25,12 +25,12 @@ | |||
25 | #include "network.h" | 25 | #include "network.h" |
26 | 26 | ||
27 | 27 | ||
28 | //returns current UNIX time in microseconds (us). | 28 | /* returns current UNIX time in microseconds (us). */ |
29 | uint64_t current_time() | 29 | uint64_t current_time() |
30 | { | 30 | { |
31 | uint64_t time; | 31 | uint64_t time; |
32 | #ifdef WIN32 | 32 | #ifdef WIN32 |
33 | //This probably works fine | 33 | /* This probably works fine */ |
34 | FILETIME ft; | 34 | FILETIME ft; |
35 | GetSystemTimeAsFileTime(&ft); | 35 | GetSystemTimeAsFileTime(&ft); |
36 | time = ft.dwHighDateTime; | 36 | time = ft.dwHighDateTime; |
@@ -48,8 +48,8 @@ uint64_t current_time() | |||
48 | 48 | ||
49 | } | 49 | } |
50 | 50 | ||
51 | //return a random number | 51 | /* return a random number |
52 | //NOTE: this function should probably not be used where cryptographic randomness is absolutely necessary | 52 | NOTE: this function should probably not be used where cryptographic randomness is absolutely necessary */ |
53 | uint32_t random_int() | 53 | uint32_t random_int() |
54 | { | 54 | { |
55 | #ifndef VANILLA_NACL | 55 | #ifndef VANILLA_NACL |
@@ -60,11 +60,11 @@ uint32_t random_int() | |||
60 | #endif | 60 | #endif |
61 | } | 61 | } |
62 | 62 | ||
63 | //our UDP socket, a global variable. | 63 | /* our UDP socket, a global variable. */ |
64 | static int sock; | 64 | static int sock; |
65 | 65 | ||
66 | //Basic network functions: | 66 | /* Basic network functions: |
67 | //Function to send packet(data) of length length to ip_port | 67 | Function to send packet(data) of length length to ip_port */ |
68 | int sendpacket(IP_Port ip_port, uint8_t * data, uint32_t length) | 68 | int sendpacket(IP_Port ip_port, uint8_t * data, uint32_t length) |
69 | { | 69 | { |
70 | ADDR addr = {AF_INET, ip_port.port, ip_port.ip}; | 70 | ADDR addr = {AF_INET, ip_port.port, ip_port.ip}; |
@@ -72,10 +72,10 @@ int sendpacket(IP_Port ip_port, uint8_t * data, uint32_t length) | |||
72 | 72 | ||
73 | } | 73 | } |
74 | 74 | ||
75 | //Function to receive data, ip and port of sender is put into ip_port | 75 | /* Function to receive data, ip and port of sender is put into ip_port |
76 | //the packet data into data | 76 | the packet data into data |
77 | //the packet length into length. | 77 | the packet length into length. |
78 | //dump all empty packets. | 78 | dump all empty packets. */ |
79 | int receivepacket(IP_Port * ip_port, uint8_t * data, uint32_t * length) | 79 | int receivepacket(IP_Port * ip_port, uint8_t * data, uint32_t * length) |
80 | { | 80 | { |
81 | ADDR addr; | 81 | ADDR addr; |
@@ -87,8 +87,8 @@ int receivepacket(IP_Port * ip_port, uint8_t * data, uint32_t * length) | |||
87 | (*(int32_t *)length) = recvfrom(sock,(char *) data, MAX_UDP_PACKET_SIZE, 0, (struct sockaddr *)&addr, &addrlen); | 87 | (*(int32_t *)length) = recvfrom(sock,(char *) data, MAX_UDP_PACKET_SIZE, 0, (struct sockaddr *)&addr, &addrlen); |
88 | if(*(int32_t *)length <= 0) | 88 | if(*(int32_t *)length <= 0) |
89 | { | 89 | { |
90 | //nothing received | 90 | /* nothing received |
91 | //or empty packet | 91 | or empty packet */ |
92 | return -1; | 92 | return -1; |
93 | } | 93 | } |
94 | ip_port->ip = addr.ip; | 94 | ip_port->ip = addr.ip; |
@@ -97,12 +97,12 @@ int receivepacket(IP_Port * ip_port, uint8_t * data, uint32_t * length) | |||
97 | 97 | ||
98 | } | 98 | } |
99 | 99 | ||
100 | //initialize networking | 100 | /* initialize networking |
101 | //bind to ip and port | 101 | bind to ip and port |
102 | //ip must be in network order EX: 127.0.0.1 = (7F000001) | 102 | ip must be in network order EX: 127.0.0.1 = (7F000001) |
103 | //port is in host byte order (this means don't worry about it) | 103 | port is in host byte order (this means don't worry about it) |
104 | //returns 0 if no problems | 104 | returns 0 if no problems |
105 | //TODO: add something to check if there are errors | 105 | TODO: add something to check if there are errors */ |
106 | int init_networking(IP ip ,uint16_t port) | 106 | int init_networking(IP ip ,uint16_t port) |
107 | { | 107 | { |
108 | #ifdef WIN32 | 108 | #ifdef WIN32 |
@@ -117,11 +117,11 @@ int init_networking(IP ip ,uint16_t port) | |||
117 | #endif | 117 | #endif |
118 | srand((uint32_t)current_time()); | 118 | srand((uint32_t)current_time()); |
119 | 119 | ||
120 | //initialize our socket | 120 | /* initialize our socket */ |
121 | sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); | 121 | sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); |
122 | 122 | ||
123 | //Functions to increase the size of the send and receive UDP buffers | 123 | /* Functions to increase the size of the send and receive UDP buffers |
124 | //NOTE: uncomment if necessary | 124 | NOTE: uncomment if necessary */ |
125 | /* | 125 | /* |
126 | int n = 1024 * 1024 * 2; | 126 | int n = 1024 * 1024 * 2; |
127 | if(setsockopt(sock, SOL_SOCKET, SO_RCVBUF, (char*)&n, sizeof(n)) == -1) | 127 | if(setsockopt(sock, SOL_SOCKET, SO_RCVBUF, (char*)&n, sizeof(n)) == -1) |
@@ -134,28 +134,28 @@ int init_networking(IP ip ,uint16_t port) | |||
134 | return -1; | 134 | return -1; |
135 | }*/ | 135 | }*/ |
136 | 136 | ||
137 | //Set socket nonblocking | 137 | /* Set socket nonblocking */ |
138 | #ifdef WIN32 | 138 | #ifdef WIN32 |
139 | //I think this works for windows | 139 | /* I think this works for windows */ |
140 | u_long mode = 1; | 140 | u_long mode = 1; |
141 | //ioctl(sock, FIONBIO, &mode); | 141 | /* ioctl(sock, FIONBIO, &mode); */ |
142 | ioctlsocket(sock, FIONBIO, &mode); | 142 | ioctlsocket(sock, FIONBIO, &mode); |
143 | #else | 143 | #else |
144 | fcntl(sock, F_SETFL, O_NONBLOCK, 1); | 144 | fcntl(sock, F_SETFL, O_NONBLOCK, 1); |
145 | #endif | 145 | #endif |
146 | 146 | ||
147 | //Bind our socket to port PORT and address 0.0.0.0 | 147 | /* Bind our socket to port PORT and address 0.0.0.0 */ |
148 | ADDR addr = {AF_INET, htons(port), ip}; | 148 | ADDR addr = {AF_INET, htons(port), ip}; |
149 | bind(sock, (struct sockaddr*)&addr, sizeof(addr)); | 149 | bind(sock, (struct sockaddr*)&addr, sizeof(addr)); |
150 | return 0; | 150 | return 0; |
151 | 151 | ||
152 | } | 152 | } |
153 | 153 | ||
154 | //function to cleanup networking stuff | 154 | /* function to cleanup networking stuff */ |
155 | void shutdown_networking() | 155 | void shutdown_networking() |
156 | { | 156 | { |
157 | #ifdef WIN32 | 157 | #ifdef WIN32 |
158 | WSACleanup(); | 158 | WSACleanup(); |
159 | #endif | 159 | #endif |
160 | return; | 160 | return; |
161 | } \ No newline at end of file | 161 | } |