1 /* $OpenBSD: rtsold.h,v 1.11 2004/01/05 20:32:50 itojun Exp $ */ 2 /* $KAME: rtsold.h,v 1.14 2002/05/31 10:10:03 itojun Exp $ */ 3 4 /* 5 * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. 6 * All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without 9 * modification, are permitted provided that the following conditions 10 * are met: 11 * 1. Redistributions of source code must retain the above copyright 12 * notice, this list of conditions and the following disclaimer. 13 * 2. Redistributions in binary form must reproduce the above copyright 14 * notice, this list of conditions and the following disclaimer in the 15 * documentation and/or other materials provided with the distribution. 16 * 3. Neither the name of the project nor the names of its contributors 17 * may be used to endorse or promote products derived from this software 18 * without specific prior written permission. 19 * 20 * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND 21 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23 * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE 24 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 26 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 27 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 28 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 29 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 30 * SUCH DAMAGE. 31 */ 32 33 struct ifinfo { 34 struct ifinfo *next; /* pointer to the next interface */ 35 36 struct sockaddr_dl *sdl; /* link-layer address */ 37 char ifname[IF_NAMESIZE]; /* interface name */ 38 u_int32_t linkid; /* link ID of this interface */ 39 int active; /* interface status */ 40 int probeinterval; /* interval of probe timer(if necessary) */ 41 int probetimer; /* rest of probe timer */ 42 int mediareqok; /* wheter the IF supports SIOCGIFMEDIA */ 43 int state; 44 int probes; 45 int dadcount; 46 struct timeval timer; 47 struct timeval expire; 48 int errors; /* # of errors we've got - detect wedge */ 49 50 int racnt; /* total # of valid RAs it have got */ 51 52 size_t rs_datalen; 53 u_char *rs_data; 54 }; 55 56 /* per interface status */ 57 #define IFS_IDLE 0 58 #define IFS_DELAY 1 59 #define IFS_PROBE 2 60 #define IFS_DOWN 3 61 #define IFS_TENTATIVE 4 62 63 /* rtsold.c */ 64 extern struct timeval tm_max; 65 extern int dflag; 66 struct ifinfo *find_ifinfo(int ifindex); 67 void rtsol_timer_update(struct ifinfo *); 68 extern void warnmsg(int, const char *, const char *, ...) 69 __attribute__((__format__(__printf__, 3, 4))); 70 extern char **autoifprobe(void); 71 72 /* if.c */ 73 extern int ifinit(void); 74 extern int interface_up(char *); 75 extern int interface_status(struct ifinfo *); 76 extern int lladdropt_length(struct sockaddr_dl *); 77 extern void lladdropt_fill(struct sockaddr_dl *, struct nd_opt_hdr *); 78 extern struct sockaddr_dl *if_nametosdl(char *); 79 extern int getinet6sysctl(int); 80 extern int setinet6sysctl(int, int); 81 82 /* rtsol.c */ 83 extern int sockopen(void); 84 extern void sendpacket(struct ifinfo *); 85 extern void rtsol_input(int); 86 87 /* probe.c */ 88 extern int probe_init(void); 89 extern void defrouter_probe(struct ifinfo *); 90 91 /* dump.c */ 92 extern void rtsold_dump_file(char *); 93 94 #if 0 95 /* rtsock.c */ 96 extern int rtsock_open(void); 97 extern int rtsock_input(int); 98 #endif 99