Changeset a56903
- Timestamp:
- 04/23/11 20:55:59 (13 months ago)
- Branches:
- master
- Children:
- 85be9b
- Parents:
- 66d942
- git-author:
- Marcel Bokhorst <marcel@…> (04/23/11 20:55:59)
- git-committer:
- Erik Ekman <erik@…> (02/04/12 20:34:05)
- Files:
-
- 2 added
- 10 edited
-
src/Android.mk (added)
-
src/android_dns.h (added)
-
src/client.c (modified) (2 diffs)
-
src/common.c (modified) (5 diffs)
-
src/common.h (modified) (1 diff)
-
src/dns.c (modified) (1 diff)
-
src/iodined.c (modified) (2 diffs)
-
src/tun.c (modified) (4 diffs)
-
src/user.c (modified) (10 diffs)
-
src/user.h (modified) (1 diff)
-
src/util.c (modified) (2 diffs)
-
tests/user.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
src/client.c
rb22e3d ra56903 32 32 #include <winsock2.h> 33 33 #else 34 #ifdef ANDROID 35 #include "android_dns.h" 36 #endif 34 37 #include <arpa/nameser.h> 35 38 #ifdef DARWIN … … 149 152 client_set_nameserver(const char *cp, int port) 150 153 { 154 #ifdef ANDROID 155 struct addrinfo hints, *result, *p; 156 memset(&hints, 0, sizeof(hints)); 157 hints.ai_family = AF_INET; 158 159 char sport[10]; 160 sprintf(sport, "%d", port); 161 162 getaddrinfo(cp, sport, &hints, &result); 163 if (result == NULL) 164 errx(1, "Cannot resolve %s:%s (no network?)", cp, sport); 165 else { 166 for (p = result;p != NULL; p = p->ai_next) { 167 if (p->ai_family == AF_INET) { /* IPv4 */ 168 struct sockaddr_in *ipv4 = (struct sockaddr_in *)p->ai_addr; 169 memset(&nameserv, 0, sizeof(nameserv)); 170 nameserv.sin_family = AF_INET; 171 nameserv.sin_port = htons(port); 172 nameserv.sin_addr = ipv4->sin_addr; 173 freeaddrinfo(result); 174 return; 175 } 176 } 177 freeaddrinfo(result); 178 } 179 #endif 151 180 struct in_addr addr; 152 181 -
src/common.c
r9c3343 ra56903 55 55 56 56 /* daemon(3) exists only in 4.4BSD or later, and in GNU libc */ 57 #if !defined( WINDOWS32) && !(defined(BSD) && (BSD >= 199306)) && !defined(__GLIBC__)57 #if !defined(ANDROID) && !defined(WINDOWS32) && !(defined(BSD) && (BSD >= 199306)) && !defined(__GLIBC__) 58 58 static int daemon(int nochdir, int noclose) 59 59 { … … 277 277 } 278 278 279 #ifdef WINDOWS32 279 #if defined(WINDOWS32) || defined(ANDROID) 280 #ifndef ANDROID 280 281 int 281 282 inet_aton(const char *cp, struct in_addr *inp) … … 284 285 return inp->s_addr != INADDR_ANY; 285 286 } 287 #endif 286 288 287 289 void … … 292 294 va_start(list, fmt); 293 295 if (fmt) fprintf(stderr, fmt, list); 296 #ifndef ANDROID 294 297 if (errno == 0) { 295 298 fprintf(stderr, ": WSA error %d\n", WSAGetLastError()); … … 297 300 fprintf(stderr, ": %s\n", strerror(errno)); 298 301 } 302 #endif 299 303 va_end(list); 300 304 } -
src/common.h
rb17790 ra56903 120 120 int check_topdomain(char *); 121 121 122 #ifdef WINDOWS32 122 #if defined(WINDOWS32) || defined(ANDROID) 123 #ifndef ANDROID 123 124 int inet_aton(const char *cp, struct in_addr *inp); 125 #endif 124 126 125 127 void err(int eval, const char *fmt, ...); -
src/dns.c
rb17790 ra56903 26 26 #include "windows.h" 27 27 #else 28 #ifdef ANDROID 29 #include "android_dns.h" 30 #endif 28 31 #include <arpa/nameser.h> 29 32 #ifdef DARWIN -
src/iodined.c
r0a968a ra56903 1656 1656 20msec: ~8 packs every 1/50sec = ~400 DNSreq/sec, 1657 1657 or ~1200bytes every 1/50sec = ~0.5 Mbit/sec upstream */ 1658 for (userid = 0; userid < USERS; userid++) {1658 for (userid = 0; userid < created_users; userid++) { 1659 1659 if (users[userid].active && !users[userid].disabled && 1660 1660 users[userid].last_pkt + 60 > time(NULL)) { … … 1708 1708 1709 1709 /* Send realsoon's if tun or dns didn't already */ 1710 for (userid = 0; userid < USERS; userid++)1710 for (userid = 0; userid < created_users; userid++) 1711 1711 if (users[userid].active && !users[userid].disabled && 1712 1712 users[userid].last_pkt + 60 > time(NULL) && -
src/tun.c
r0be433 ra56903 25 25 #include <fcntl.h> 26 26 27 #ifndef IFCONFIGPATH 28 #define IFCONFIGPATH "/sbin/" 29 #endif 30 27 31 #ifdef WINDOWS32 28 32 #include <winsock2.h> … … 72 76 int tun_fd; 73 77 struct ifreq ifreq; 78 #ifdef ANDROID 79 char *tunnel = "/dev/tun"; 80 #else 74 81 char *tunnel = "/dev/net/tun"; 82 #endif 75 83 76 84 if ((tun_fd = open(tunnel, O_RDWR)) < 0) { … … 456 464 #ifndef WINDOWS32 457 465 snprintf(cmdline, sizeof(cmdline), 458 "/sbin/ifconfig %s %s %s netmask %s",466 IFCONFIGPATH "ifconfig %s %s %s netmask %s", 459 467 if_name, 460 468 ip, … … 523 531 if (mtu > 200 && mtu <= 1500) { 524 532 snprintf(cmdline, sizeof(cmdline), 525 "/sbin/ifconfig %s mtu %u",533 IFCONFIGPATH "ifconfig %s mtu %u", 526 534 if_name, 527 535 mtu); -
src/user.c
r0be433 ra56903 34 34 #include "user.h" 35 35 36 struct user users[USERS]; 36 struct user *users; 37 unsigned usercount; 37 38 38 39 int … … 42 43 int skip = 0; 43 44 char newip[16]; 44 int created_users = 0;45 45 46 46 int maxusers; … … 58 58 59 59 maxusers = (1 << (32-netbits)) - 3; /* 3: Net addr, broadcast addr, iodined addr */ 60 61 memset(users, 0, USERS * sizeof(struct user)); 62 for (i = 0; i < USERS; i++) { 60 usercount = MIN(maxusers, USERS); 61 62 users = calloc(usercount, sizeof(struct user)); 63 for (i = 0; i < usercount; i++) { 63 64 in_addr_t ip; 64 65 users[i].id = i; … … 73 74 users[i].tun_ip = ip; 74 75 net.s_addr = ip; 75 if (maxusers-- < 1) { 76 users[i].disabled = 1; 77 } else { 78 users[i].disabled = 0; 79 created_users++; 80 } 76 users[i].disabled = 0; 81 77 users[i].active = 0; 82 78 /* Rest is reset on login ('V' packet) */ 83 79 } 84 80 85 return created_users;81 return usercount; 86 82 } 87 83 … … 101 97 102 98 ret = 0; 103 for (i = 0; i < USERS; i++) {99 for (i = 0; i < usercount; i++) { 104 100 if (users[i].active && !users[i].disabled && 105 101 users[i].last_pkt + 60 > time(NULL) && … … 119 115 120 116 ret = -1; 121 for (i = 0; i < USERS; i++) {117 for (i = 0; i < usercount; i++) { 122 118 if (users[i].active && !users[i].disabled && 123 119 users[i].last_pkt + 60 > time(NULL) && … … 144 140 ret = 1; 145 141 now = time(NULL); 146 for (i = 0; i < USERS; i++) {142 for (i = 0; i < usercount; i++) { 147 143 if (users[i].active && !users[i].disabled && 148 144 users[i].last_pkt + 60 > now && … … 168 164 int ret = -1; 169 165 int i; 170 for (i = 0; i < USERS; i++) {166 for (i = 0; i < usercount; i++) { 171 167 /* Not used at all or not used in one minute */ 172 168 if ((!users[i].active || users[i].last_pkt + 60 < time(NULL)) && !users[i].disabled) { … … 185 181 user_switch_codec(int userid, struct encoder *enc) 186 182 { 187 if (userid < 0 || userid >= USERS)183 if (userid < 0 || userid >= usercount) 188 184 return; 189 185 … … 194 190 user_set_conn_type(int userid, enum connection c) 195 191 { 196 if (userid < 0 || userid >= USERS)192 if (userid < 0 || userid >= usercount) 197 193 return; 198 194 -
src/user.h
rb22e3d ra56903 74 74 }; 75 75 76 extern struct user users[USERS];76 extern struct user *users; 77 77 78 78 int init_users(in_addr_t, int); -
src/util.c
r66d942 ra56903 26 26 char buf[80]; 27 27 FILE *fp; 28 #ifdef ANDROID 29 fp = popen("getprop net.dns1", "r"); 30 if (fp == NULL) 31 err(1, "getprop net.dns1 failed"); 32 if (fgets(buf, sizeof(buf), fp) == NULL) 33 err(1, "read getprop net.dns1 failed"); 34 if (sscanf(buf, "%15s", addr) == 1) 35 rv = addr; 36 pclose(fp); 37 #else 28 38 29 39 rv = NULL; … … 42 52 43 53 fclose(fp); 54 #endif 44 55 #else /* !WINDOWS32 */ 45 56 FIXED_INFO *fixed_info; -
tests/user.c
r85104a ra56903 33 33 char givenip[16]; 34 34 int i; 35 36 ip = inet_addr("127.0.0.1"); 37 init_users(ip, 27); 38 for (i = 0; i < USERS; i++) { 35 int count; 36 37 ip = inet_addr("127.0.0.1"); 38 count = init_users(ip, 27); 39 for (i = 0; i < count; i++) { 39 40 fail_unless(users[i].id == i); 40 41 fail_unless(users[i].q.id == 0);
Note: See TracChangeset
for help on using the changeset viewer.
