From 226096ac0275e6aadf3ff9459e130e6dd1821934 Mon Sep 17 00:00:00 2001 From: Nakidai Date: Fri, 5 Dec 2025 14:30:53 +0300 Subject: Port fatvpn.c tp OpenBSD Haven't tasted yet, though --- fatvpn.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'fatvpn.c') diff --git a/fatvpn.c b/fatvpn.c index 59eaa10..01c6459 100644 --- a/fatvpn.c +++ b/fatvpn.c @@ -18,7 +18,11 @@ int main(int argc, char *argv[]){ struct timespec t; struct timeval slp; struct termios attr; +#ifdef __linux__ struct ifreq ifr; +#elif __OpenBSD__ + char *tappath; +#endif fd_set rset; /* arguments */ @@ -135,6 +139,10 @@ int main(int argc, char *argv[]){ /* cur pkt buf */ pkt = malloc(MAX_PKT_SZ); if (pkt == NULL) fputs("pkt = malloc() failed\n",stderr), exit(1); +#ifdef __OpenBSD__ + tappath = malloc(MAX_TAPPATH_SZ); + if (tappath == NULL) fputs("tappath = malloc() failed\n",stderr), exit(1); +#endif /* socket, setsockopt */ skt = socket(srv.ss_family, SOCK_DGRAM, 0); ERRDIE(skt, "socket"); @@ -143,6 +151,7 @@ int main(int argc, char *argv[]){ ERRDIE(res, "SO_REUSEADDR"); /* tap */ +#ifdef __linux__ tap = open("/dev/net/tun", O_RDWR); ERRDIE(tap, "/dev/net/tun"); @@ -151,6 +160,11 @@ int main(int argc, char *argv[]){ strncpy(ifr.ifr_name, argv[1], IFNAMSIZ); res = ioctl(tap, TUNSETIFF, &ifr); ERRDIE(res, "TUNSETIFF"); +#elif __OpenBSD__ + snprintf(tappath, MAX_TAPPATH_SZ, "/dev/%s", argv[1]); + tap = open(tappath, O_RDWR); + ERRDIE(tap, tappath); +#endif fdmax = (tap > skt) ? tap+1 : skt+1; -- cgit 1.4.1