diff -c -r1.1 Makefile *** Makefile 2001/09/28 23:38:08 1.1 --- Makefile 2001/09/29 00:07:17 *************** *** 6,11 **** --- 6,12 ---- SRCS= route.c keywords.h CFLAGS+=-I. -Wall -DNS CFLAGS+=-DINET6 + CFLAGS+=-DLBL CLEANFILES+=keywords.h BINMODE=4555 =================================================================== RCS file: RCS/keywords,v retrieving revision 1.1 diff -c -r1.1 keywords *** keywords 2001/09/28 23:38:08 1.1 --- keywords 2001/09/28 23:38:22 *************** *** 2,7 **** --- 2,8 ---- # $FreeBSD: src/sbin/route/keywords,v 1.4 1999/12/07 17:38:53 shin Exp $ add + announce atalk blackhole change *************** *** 36,41 **** --- 37,43 ---- prefixlen proto1 proto2 + proxy recvpipe reject rtt =================================================================== RCS file: RCS/route.c,v retrieving revision 1.1 diff -c -r1.1 route.c *** route.c 2001/09/28 23:38:08 1.1 --- route.c 2001/09/29 00:00:21 *************** *** 56,61 **** --- 56,64 ---- #include #include #include + #ifdef LBL + #include + #endif #include #ifdef NS #include *************** *** 94,120 **** struct sockaddr_ns sns; #endif struct sockaddr_dl sdl; struct sockaddr_storage ss; /* added to avoid memory overrun */ } so_dst, so_gate, so_mask, so_genmask, so_ifa, so_ifp; typedef union sockunion *sup; int pid, rtm_addrs, uid; int s; ! int forcehost, forcenet, doflush, nflag, af, qflag, tflag, keyword(); int iflag, verbose, aflen = sizeof (struct sockaddr_in); int locking, lockrest, debugonly; struct rt_metrics rt_metrics; u_long rtm_inits; int atalk_aton __P((const char *, struct at_addr *)); char *atalk_ntoa __P((struct at_addr)); ! const char *routename(), *netname(); ! void flushroutes(), newroute(), monitor(), sockaddr(), sodump(), bprintf(); ! void print_getmsg(), print_rtmsg(), pmsg_common(), pmsg_addrs(), mask_addr(); ! int getaddr(), rtmsg(), x25_makemask(); ! int prefixlen(); ! extern char *iso_ntoa(); ! ! void usage __P((const char *)) __dead2; void usage(cp) --- 97,144 ---- struct sockaddr_ns sns; #endif struct sockaddr_dl sdl; + #ifdef LBL + struct sockaddr_inarp sia; + #endif struct sockaddr_storage ss; /* added to avoid memory overrun */ } so_dst, so_gate, so_mask, so_genmask, so_ifa, so_ifp; typedef union sockunion *sup; int pid, rtm_addrs, uid; int s; ! int forcehost, forcenet, doflush, nflag, af, qflag, tflag; int iflag, verbose, aflen = sizeof (struct sockaddr_in); int locking, lockrest, debugonly; struct rt_metrics rt_metrics; u_long rtm_inits; + + /* Forwards */ int atalk_aton __P((const char *, struct at_addr *)); char *atalk_ntoa __P((struct at_addr)); ! void bprintf __P((FILE *, int, u_char *)); ! const char *routename __P((struct sockaddr *)); ! const char *netname __P((struct sockaddr *)); ! void flushroutes __P((int, char **)); ! int getaddr __P((int, char *, struct hostent **)); ! void inet_makenetandmask __P((u_long, struct sockaddr_in *, u_long)); ! void interfaces __P((void)); ! int keyword __P((char *)); ! void mask_addr __P((void)); ! void monitor __P((void)); ! void newroute __P((int, char **)); ! #ifdef NS ! char *ns_print __P((struct sockaddr_ns *)); ! #endif ! int prefixlen __P((char *)); ! void print_getmsg __P((struct rt_msghdr *, int)); ! void print_rtmsg __P((struct rt_msghdr *, int)); ! void pmsg_common __P((struct rt_msghdr *)); ! void pmsg_addrs __P((char *, int)); ! int rtmsg __P((int, int)); ! void set_metric __P((char *, int)); ! void sockaddr __P((char *, struct sockaddr *)); ! void sodump __P((sup, char *)); ! void usage __P((const char *)) __dead2; void usage(cp) *************** *** 310,318 **** struct hostent *hp; static char domain[MAXHOSTNAMELEN + 1]; static int first = 1; - #ifdef NS - char *ns_print(); - #endif if (first) { first = 0; --- 334,339 ---- *************** *** 433,441 **** u_long net, mask; register u_long i; int subnetshift; - #ifdef NS - char *ns_print(); - #endif switch (sa->sa_family) { --- 454,459 ---- *************** *** 586,591 **** --- 604,612 ---- { char *cmd, *dest = "", *gateway = "", *err; int ishost = 0, ret, attempts, oerrno, flags = RTF_STATIC; + #ifdef LBL + int proxy = 0; + #endif int key; struct hostent *hp = 0; *************** *** 657,662 **** --- 678,691 ---- case K_PROTO2: flags |= RTF_PROTO2; break; + #ifdef LBL + case K_ANNOUNCE: + flags |= RTF_ANNOUNCE; + break; + case K_PROXY: + ++proxy; + break; + #endif case K_CLONING: flags |= RTF_CLONING; break; *************** *** 754,759 **** --- 783,792 ---- flags |= RTF_HOST; if (iflag == 0) flags |= RTF_GATEWAY; + #ifdef LBL + if (proxy) + so_dst.sia.sin_other = SIN_PROXY; + #endif for (attempts = 1; ; attempts++) { errno = 0; if ((ret = rtmsg(*cmd, flags)) == 0) *************** *** 1396,1402 **** register char *cp; register int i; ! (void) printf(" route to: %s\n", routename(&so_dst)); if (rtm->rtm_version != RTM_VERSION) { warnx("routing message version %d not understood", rtm->rtm_version); --- 1429,1435 ---- register char *cp; register int i; ! (void) printf(" route to: %s\n", routename(&so_dst.sa)); if (rtm->rtm_version != RTM_VERSION) { warnx("routing message version %d not understood", rtm->rtm_version); =================================================================== RCS file: RCS/route.8,v retrieving revision 1.1 diff -c -r1.1 route.8 *** route.8 2001/09/29 00:10:57 1.1 --- route.8 2001/09/29 00:32:31 *************** *** 32,38 **** .\" @(#)route.8 8.3 (Berkeley) 3/19/94 .\" $FreeBSD: src/sbin/route/route.8,v 1.17.2.6 2001/07/22 11:32:33 dd Exp $ .\" ! .Dd March 19, 1994 .Dt ROUTE 8 .Os BSD 4.4 .Sh NAME --- 32,38 ---- .\" @(#)route.8 8.3 (Berkeley) 3/19/94 .\" $FreeBSD: src/sbin/route/route.8,v 1.17.2.6 2001/07/22 11:32:33 dd Exp $ .\" ! .Dd September 28, 2001 .Dt ROUTE 8 .Os BSD 4.4 .Sh NAME *************** *** 273,278 **** --- 273,280 ---- -nostatic ~RTF_STATIC - pretend route added by kernel or daemon -reject RTF_REJECT - emit an ICMP unreachable when matched -blackhole RTF_BLACKHOLE - silently discard pkts (during updates) + -announce RTF_ANNOUNCE - announce new arp entry + -proxy SIN_PROXY - create a proxy arp entry -proto1 RTF_PROTO1 - set protocol specific routing flag #1 -proto2 RTF_PROTO2 - set protocol specific routing flag #2 -llinfo RTF_LLINFO - validly translates proto addr to link addr