xref: /freebsd/usr.sbin/ppp/tun.c (revision dd7e261079699ca066fd8acaaf3ed460e5de61a1)
11ae349f5Scvs2svn /*-
21ae349f5Scvs2svn  * Copyright (c) 1997 Brian Somers <brian@Awfulhak.org>
31ae349f5Scvs2svn  * All rights reserved.
41ae349f5Scvs2svn  *
51ae349f5Scvs2svn  * Redistribution and use in source and binary forms, with or without
61ae349f5Scvs2svn  * modification, are permitted provided that the following conditions
71ae349f5Scvs2svn  * are met:
81ae349f5Scvs2svn  * 1. Redistributions of source code must retain the above copyright
91ae349f5Scvs2svn  *    notice, this list of conditions and the following disclaimer.
101ae349f5Scvs2svn  * 2. Redistributions in binary form must reproduce the above copyright
111ae349f5Scvs2svn  *    notice, this list of conditions and the following disclaimer in the
121ae349f5Scvs2svn  *    documentation and/or other materials provided with the distribution.
131ae349f5Scvs2svn  *
141ae349f5Scvs2svn  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
151ae349f5Scvs2svn  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
161ae349f5Scvs2svn  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
171ae349f5Scvs2svn  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
181ae349f5Scvs2svn  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
191ae349f5Scvs2svn  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
201ae349f5Scvs2svn  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
211ae349f5Scvs2svn  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
221ae349f5Scvs2svn  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
231ae349f5Scvs2svn  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
241ae349f5Scvs2svn  * SUCH DAMAGE.
251ae349f5Scvs2svn  *
26dd7e2610SBrian Somers  *	$Id: tun.c,v 1.6.4.15 1998/04/28 01:25:44 brian Exp $
271ae349f5Scvs2svn  */
281ae349f5Scvs2svn 
292764b86aSBrian Somers #include <sys/types.h>
30e43ebac1SBrian Somers #include <sys/socket.h>
31e43ebac1SBrian Somers #include <net/if.h>
321ae349f5Scvs2svn #include <netinet/in.h>
331ae349f5Scvs2svn #include <net/if_tun.h>
34eaa4df37SBrian Somers #include <netinet/in_systm.h>
35eaa4df37SBrian Somers #include <netinet/ip.h>
361fa665f5SBrian Somers #include <sys/un.h>
371ae349f5Scvs2svn 
381ae349f5Scvs2svn #include <string.h>
391ae349f5Scvs2svn #include <sys/ioctl.h>
401ae349f5Scvs2svn #include <sys/errno.h>
411ae349f5Scvs2svn 
421ae349f5Scvs2svn #include "mbuf.h"
431ae349f5Scvs2svn #include "log.h"
4463258dccSBrian Somers #include "timer.h"
45879ed6faSBrian Somers #include "lqr.h"
461ae349f5Scvs2svn #include "hdlc.h"
471ae349f5Scvs2svn #include "defs.h"
486d666775SBrian Somers #include "fsm.h"
495828db6dSBrian Somers #include "throughput.h"
505828db6dSBrian Somers #include "iplist.h"
51eaa4df37SBrian Somers #include "slcompress.h"
525828db6dSBrian Somers #include "ipcp.h"
535ca5389aSBrian Somers #include "filter.h"
542f786681SBrian Somers #include "descriptor.h"
553b0f8d2eSBrian Somers #include "lcp.h"
563b0f8d2eSBrian Somers #include "ccp.h"
573b0f8d2eSBrian Somers #include "link.h"
583b0f8d2eSBrian Somers #include "mp.h"
597a6f8720SBrian Somers #include "bundle.h"
601ae349f5Scvs2svn #include "tun.h"
611ae349f5Scvs2svn 
621ae349f5Scvs2svn void
637a6f8720SBrian Somers tun_configure(struct bundle *bundle, int mtu, int speed)
641ae349f5Scvs2svn {
651ae349f5Scvs2svn   struct tuninfo info;
661ae349f5Scvs2svn 
671ae349f5Scvs2svn   info.type = 23;
681ae349f5Scvs2svn   info.mtu = mtu;
691ae349f5Scvs2svn   info.baudrate = speed;
701ae349f5Scvs2svn #ifdef __OpenBSD__
711ae349f5Scvs2svn   info.flags = IFF_UP|IFF_POINTOPOINT;
721ae349f5Scvs2svn #endif
737a6f8720SBrian Somers   if (ioctl(bundle->tun_fd, TUNSIFINFO, &info) < 0)
74dd7e2610SBrian Somers     log_Printf(LogERROR, "tun_configure: ioctl(TUNSIFINFO): %s\n",
751ae349f5Scvs2svn 	      strerror(errno));
761ae349f5Scvs2svn }
77