xref: /freebsd/usr.sbin/ppp/tun.c (revision 6a6b4bbb08730720e1751d9c6624fe056a0314a2)
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