route.h revision 78189
1198090Srdivacky/*- 2198090Srdivacky * Copyright (c) 1996 - 2001 Brian Somers <brian@Awfulhak.org> 3198090Srdivacky * based on work by Toshiharu OHNO <tony-o@iij.ad.jp> 4198090Srdivacky * Internet Initiative Japan, Inc (IIJ) 5198090Srdivacky * All rights reserved. 6198090Srdivacky * 7198090Srdivacky * Redistribution and use in source and binary forms, with or without 8198090Srdivacky * modification, are permitted provided that the following conditions 9198090Srdivacky * are met: 10198090Srdivacky * 1. Redistributions of source code must retain the above copyright 11198090Srdivacky * notice, this list of conditions and the following disclaimer. 12205218Srdivacky * 2. Redistributions in binary form must reproduce the above copyright 13198396Srdivacky * notice, this list of conditions and the following disclaimer in the 14198090Srdivacky * documentation and/or other materials provided with the distribution. 15198396Srdivacky * 16198396Srdivacky * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 17198090Srdivacky * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18198090Srdivacky * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19198090Srdivacky * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 20203954Srdivacky * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 21198090Srdivacky * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 22198090Srdivacky * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 23198090Srdivacky * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 24203954Srdivacky * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 25198090Srdivacky * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26203954Srdivacky * SUCH DAMAGE. 27205218Srdivacky * 28205218Srdivacky * $FreeBSD: head/usr.sbin/ppp/route.h 78189 2001-06-13 21:52:19Z brian $ 29203954Srdivacky */ 30203954Srdivacky 31203954Srdivackystruct bundle; 32203954Srdivackystruct cmdargs; 33198090Srdivackystruct rt_msghdr; 34198090Srdivackystruct sockaddr; 35198090Srdivacky 36198090Srdivacky#define ROUTE_STATIC 0x00 37198090Srdivacky#define ROUTE_DSTMYADDR 0x01 38198090Srdivacky#define ROUTE_DSTHISADDR 0x02 39198090Srdivacky#define ROUTE_DSTDNS0 0x04 40198090Srdivacky#define ROUTE_DSTDNS1 0x08 41198090Srdivacky#define ROUTE_DSTANY 0x0f 42198090Srdivacky#define ROUTE_GWHISADDR 0x10 /* May be ORd with DST_* */ 43198090Srdivacky 44198090Srdivackystruct sticky_route { 45198090Srdivacky int type; /* ROUTE_* value (not _STATIC) */ 46198090Srdivacky struct sticky_route *next; /* next in list */ 47198090Srdivacky 48204642Srdivacky struct in_addr dst; 49204642Srdivacky struct in_addr mask; 50198090Srdivacky struct in_addr gw; 51198090Srdivacky}; 52198090Srdivacky 53198090Srdivackyextern int GetIfIndex(char *); 54198090Srdivackyextern int route_Show(struct cmdargs const *); 55205218Srdivackyextern void route_IfDelete(struct bundle *, int); 56198090Srdivackyextern void route_UpdateMTU(struct bundle *); 57198090Srdivackyextern const char *Index2Nam(int); 58204642Srdivackyextern void route_Change(struct bundle *, struct sticky_route *, 59203954Srdivacky struct in_addr, struct in_addr, struct in_addr[2]); 60203954Srdivackyextern void route_Add(struct sticky_route **, int, struct in_addr, 61203954Srdivacky struct in_addr, struct in_addr); 62203954Srdivackyextern void route_Delete(struct sticky_route **, int, struct in_addr); 63203954Srdivackyextern void route_DeleteAll(struct sticky_route **); 64203954Srdivackyextern void route_Clean(struct bundle *, struct sticky_route *); 65203954Srdivackyextern void route_ShowSticky(struct prompt *, struct sticky_route *, 66203954Srdivacky const char *, int); 67203954Srdivackyextern void route_ParseHdr(struct rt_msghdr *, struct sockaddr *[RTAX_MAX]); 68203954Srdivackyextern int rt_Set(struct bundle *, int, struct in_addr, 69203954Srdivacky struct in_addr, struct in_addr, int, int); 70203954Srdivackyextern void rt_Update(struct bundle *, struct in_addr, struct in_addr); 71204642Srdivacky