Skip to content

Commit 12fd809

Browse files
committed
Bug fixes. Verified that DHCP works for ip address assignment.
1 parent 8734d24 commit 12fd809

File tree

5 files changed

+14
-27
lines changed

5 files changed

+14
-27
lines changed

common.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ void logit(int level, char * fmt, ...) {
5353
int err;
5454
va_list ap;
5555

56-
if(level = 0)
56+
if(level == 0)
5757
err = LOG_INFO;
5858
else if(level == -1) {
5959
if(verbose == 0)

gssvpn.c

+7-4
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
#include <errno.h>
4242
#ifdef HAVE_IFADDRS_H
4343
#include <ifaddrs.h>
44+
#include <net/if_dl.h>
4445
#endif
4546
#include "libev/ev.h"
4647
#include "gssvpn.h"
@@ -108,8 +109,10 @@ int do_netinit(struct ev_loop * loop, gss_buffer_desc * in) {
108109
pid_t pid;
109110
int ts, argc = 0;
110111

111-
if(!netinit_util)
112+
if(!netinit_util) {
113+
init = 1;
112114
return 0;
115+
}
113116

114117
init = 1;
115118
last_init_activity = ev_now(loop);
@@ -223,8 +226,7 @@ void netfd_read_cb(struct ev_loop * loop, ev_io * ios, int revents) {
223226
logit(-1, "Writing %d bytes to TAP", packet.length);
224227
ssize_t s = write(tapfd, packet.value, packet.length);
225228
if(s < 0)
226-
logit(1, "Error writing packet to tap: %s",
227-
strerror(errno));
229+
logit(1, "Error writing packet to tap: %s", strerror(errno));
228230
}
229231
else if(pac == PAC_NETINIT) {
230232
if(packet.length > 0) {
@@ -293,7 +295,8 @@ int get_mac() {
293295
return -1;
294296
}
295297

296-
memcpy(mac, cifp->ifa_addr->sa_data, sizeof(mac));
298+
struct sockaddr_dl* sdl = (struct sockaddr_dl*)cifp->ifa_addr;
299+
memcpy(mac, LLADDR(sdl), sizeof(mac));
297300
freeifaddrs(ifp);
298301
#endif
299302
return 0;

gssvpnd.c

+3-7
Original file line numberDiff line numberDiff line change
@@ -262,10 +262,8 @@ void handle_netinit(struct ev_loop * loop, struct conn * client,
262262
clients_ether[eh] = client;
263263
}
264264

265-
if(!netinit_util) {
266-
send_packet(netfd, NULL, &client->addr, PAC_NETINIT);
265+
if(!netinit_util)
267266
return;
268-
}
269267

270268
if(pipe(fds) < 0) {
271269
logit(1, "Error creating pipe during netinit %s", strerror(errno));
@@ -295,7 +293,6 @@ void handle_netinit(struct ev_loop * loop, struct conn * client,
295293
char portstr[6];
296294
char * filename = netinit_util + (strlen(netinit_util) - 1);
297295
uint8_t i;
298-
OM_uint32 min;
299296

300297
close(netfd);
301298
close(tapfd);
@@ -305,6 +302,8 @@ void handle_netinit(struct ev_loop * loop, struct conn * client,
305302
if(*filename == '/')
306303
filename++;
307304

305+
sprintf(portstr, "%d", client->addr.sin_port);
306+
308307
dup2(fds[1], fileno(stdout));
309308
if(execl(netinit_util, filename, client->princname,
310309
client->ipstr, portstr, NULL) < 0)
@@ -403,9 +402,6 @@ void netfd_read_cb(struct ev_loop * loop, ev_io * ios, int revents) {
403402
size_t s = write(tapfd, packet.value, packet.length);
404403
if(s < 0)
405404
logit(1, "Error writing to tap: %s", strerror(errno));
406-
else if(s < packet.length)
407-
logit(1, "Wrote less than expected to tap: %s < %s",
408-
s, packet.length);
409405
gss_release_buffer(&min, &packet);
410406
}
411407
else if(pac == PAC_GSSINIT)

linux-server.pl

+2-12
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,6 @@
5858
elsif($inuser && $_ =~ /ip\s+($ipmatch)\s*$/) {
5959
$clientip = $1;
6060
}
61-
elsif($inuser && $_ =~ /mac\s+((?:[0-9a-f]{2}[:-]){5}[0-9a-f]{2})/i) {
62-
$clientmac = $1;
63-
}
6461
elsif($inuser && $_ =~ /dhcp/i) {
6562
$clientip = 'dhcp';
6663
}
@@ -69,17 +66,10 @@
6966

7067
(!($clientip && $subnet)) && die "Must specify client ip and subnet.";
7168

72-
if(!$clientmac) {
73-
for($i = 0; $i < 6; $i++) {
74-
$clientmac .= sprintf("%02x:", rand(255));
75-
}
76-
chop $clientmac;
77-
}
78-
7969
if($clientip =~ /dhcp/) {
80-
print "$clientmac\ndhcp\nsubnet\n$subnet\ngateway\n$gateway\n";
70+
print "dhcp\nsubnet\n$subnet\ngateway\n$gateway\n";
8171
} else {
82-
print "$clientmac\nip\n$clientip\nsubnet\n$subnet\ngateway\n$gateway\n";
72+
print "ip\n$clientip\nsubnet\n$subnet\ngateway\n$gateway\n";
8373
}
8474

8575
!$gateway && exit 0;

mac-client.pl

+1-3
Original file line numberDiff line numberDiff line change
@@ -52,13 +52,11 @@
5252
system "ifconfig $tapdev inet $ipaddr netmask $subnet";
5353
}
5454

55-
system "ipconfig waitall";
56-
5755
if(!$gateway) {
5856
exit 0;
5957
}
6058

61-
system "ping -c 1 -n $gateway";
59+
system "ping -o -q -n $gateway";
6260

6361
foreach my $dest (@routenets) {
6462
system "route add -net $dest $gateway";

0 commit comments

Comments
 (0)