From 14c0c2edb192cc93c0d5737435c11a1fc9562197 Mon Sep 17 00:00:00 2001 From: angt Date: Mon, 16 Nov 2015 12:53:47 +0100 Subject: [PATCH] Add ip-static.h --- Makefile.am | 8 +++++++- src/ip-static.h | 30 ++++++++++++++++++++++++++++++ src/main.c | 41 ++++++++--------------------------------- 3 files changed, 45 insertions(+), 34 deletions(-) create mode 100644 src/ip-static.h diff --git a/Makefile.am b/Makefile.am index d4e0935..ca16537 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,4 +1,10 @@ bin_PROGRAMS = glorytun -glorytun_SOURCES = src/common.h src/common-static.h src/main.c src/option.c src/option.h glorytun_CFLAGS = $(libsodium_CFLAGS) glorytun_LDADD = $(libsodium_LIBS) +glorytun_SOURCES = \ + src/common.h \ + src/common-static.h \ + src/ip-static.h \ + src/main.c \ + src/option.c \ + src/option.h diff --git a/src/ip-static.h b/src/ip-static.h new file mode 100644 index 0000000..de1dcb8 --- /dev/null +++ b/src/ip-static.h @@ -0,0 +1,30 @@ +#pragma once + +#include + +static inline int ip_get_version (const uint8_t *data, size_t size) +{ + if (size<20) // XXX + return -1; // XXX + + return data[0]>>4; +} + +static inline void ip_set_size (uint8_t *data, size_t size) +{ + data[2] = 0xFF&(size>>8); + data[3] = 0xFF&(size); +} + +static inline ssize_t ip_get_size (const uint8_t *data, size_t size) +{ + switch (ip_get_version(data, size)) { + case 4: + return (data[2]<<8)|data[3]; + case -1: + return -1; + } + + return 0; +} + diff --git a/src/main.c b/src/main.c index 9edd8a9..72bd38e 100644 --- a/src/main.c +++ b/src/main.c @@ -1,9 +1,5 @@ -#include "common-static.h" -#include "option.h" - #include #include -#include #include #include @@ -28,6 +24,10 @@ #include +#include "common-static.h" +#include "ip-static.h" +#include "option.h" + #ifndef O_CLOEXEC #define O_CLOEXEC 0 #endif @@ -409,31 +409,6 @@ static void gt_set_signal (void) sigaction(SIGPIPE, &sa, NULL); } -static int get_ip_version (const uint8_t *data, size_t size) -{ - if (size<20) - return -1; - - return data[0]>>4; -} - -static void set_ip_size (uint8_t *data, size_t size) -{ - data[2] = 0xFF&(size>>8); - data[3] = 0xFF&(size); -} - -static ssize_t get_ip_size (const uint8_t *data, size_t size) -{ - switch (get_ip_version(data, size)) { - case 4: - return (data[2]<<8)|data[3]; - case -1: - return -1; - } - return 0; -} - static ssize_t fd_read (int fd, void *data, size_t size) { if (!size) @@ -570,7 +545,7 @@ static size_t tun_write (int fd, const void *data, size_t size) uint32_t family; - switch (get_ip_version(data, size)) { + switch (ip_get_version(data, size)) { case 4: family = htonl(AF_INET); break; @@ -931,7 +906,7 @@ int main (int argc, char **argv) if (r<0) break; - ssize_t ip_size = get_ip_size(tunr.buf, sizeof(tunr.buf)); + ssize_t ip_size = ip_get_size(tunr.buf, sizeof(tunr.buf)); if (ip_size<=0) continue; @@ -940,7 +915,7 @@ int main (int argc, char **argv) dump_ip_header(tunr.buf, r); if (r