16a6b4bbbSBrian Somers #include <sys/param.h> 26a6b4bbbSBrian Somers #include <sys/time.h> 36a6b4bbbSBrian Somers #include <sys/select.h> 46a6b4bbbSBrian Somers #include <sys/socket.h> 56a6b4bbbSBrian Somers #include <netinet/in.h> 66a6b4bbbSBrian Somers #include <net/if.h> 76a6b4bbbSBrian Somers #include <net/if_var.h> 86a6b4bbbSBrian Somers #include <net/if_tun.h> 96a6b4bbbSBrian Somers 106a6b4bbbSBrian Somers #include <stdio.h> 116a6b4bbbSBrian Somers #include <string.h> 126a6b4bbbSBrian Somers #include <sys/ioctl.h> 136a6b4bbbSBrian Somers #include <sys/errno.h> 146a6b4bbbSBrian Somers 156a6b4bbbSBrian Somers #include "hdlc.h" 166a6b4bbbSBrian Somers #include "defs.h" 176a6b4bbbSBrian Somers #include "loadalias.h" 186a6b4bbbSBrian Somers #include "command.h" 196a6b4bbbSBrian Somers #include "vars.h" 206a6b4bbbSBrian Somers #include "log.h" 216a6b4bbbSBrian Somers #include "tun.h" 226a6b4bbbSBrian Somers 236a6b4bbbSBrian Somers void 246a6b4bbbSBrian Somers tun_configure(int mtu, int speed) 256a6b4bbbSBrian Somers { 266a6b4bbbSBrian Somers struct tuninfo info; 276a6b4bbbSBrian Somers 286a6b4bbbSBrian Somers info.type = 23; 296a6b4bbbSBrian Somers info.mtu = mtu; 306a6b4bbbSBrian Somers if (VarPrefMTU != 0 && VarPrefMTU < mtu) 316a6b4bbbSBrian Somers info.mtu = VarPrefMTU; 326a6b4bbbSBrian Somers info.baudrate = speed; 336a6b4bbbSBrian Somers #ifdef __OpenBSD__ 346a6b4bbbSBrian Somers info.flags = IFF_UP|IFF_POINTOPOINT; 356a6b4bbbSBrian Somers #endif 366a6b4bbbSBrian Somers if (ioctl(tun_out, TUNSIFINFO, &info) < 0) 376a6b4bbbSBrian Somers LogPrintf(LogERROR, "tun_configure: ioctl(TUNSIFINFO): %s\n", 386a6b4bbbSBrian Somers strerror(errno)); 396a6b4bbbSBrian Somers } 40