FreeBSD Bugzilla – Attachment 16942 Details for
Bug 30904
[PATCH] allow route to create "proxy only" arp entries
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
file.diff
file.diff (text/plain), 6.58 KB, created by
Craig Leres
on 2001-09-29 01:40:01 UTC
(
hide
)
Description:
file.diff
Filename:
MIME Type:
Creator:
Craig Leres
Created:
2001-09-29 01:40:01 UTC
Size:
6.58 KB
patch
obsolete
>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 <net/route.h> > #include <net/if_dl.h> > #include <netinet/in.h> >+ #ifdef LBL >+ #include <netinet/if_ether.h> >+ #endif > #include <netatalk/at.h> > #ifdef NS > #include <netns/ns.h> >*************** >*** 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
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 30904
: 16942