stanonik@nprdc (02/20/85)
At one time we were getting some route entries which
we could not remove because the distributed route.c,
using only the address and metric, could not specify
all combinations of rt_flags. Also I could never
remember what the metric meant. So, I've changed route.c
to also accept the rt_flags explicitly.
Ron Stanonik
stanonik@nprdc
RCS file: RCS/route.c,v
retrieving revision 1.1
diff -c -r1.1 route.c
*** /tmp/,RCSt1001882 Wed Feb 20 09:07:31 1985
--- route.c Wed Sep 26 10:32:28 1984
***************
*** 168,174
char *cmd;
if (argc < 3 || argc > 4) {
! printf("usage: %s destination gateway [ metric ]\n", argv[0]);
return;
}
cmd = argv[0];
--- 168,174 -----
char *cmd;
if (argc < 3 || argc > 4) {
! printf("usage: %s destination gateway [ metric | HG ]\n", argv[0]);
return;
}
cmd = argv[0];
***************
*** 180,185
route.rt_flags |= RTF_HOST;
if (argc > 3 && atoi(argv[3]) > 0)
route.rt_flags |= RTF_GATEWAY;
printf("%s %s: gateway ", cmd, routename(sin->sin_addr));
sin = (struct sockaddr_in *)&route.rt_gateway;
printf("%s, flags %x\n", routename(sin->sin_addr), route.rt_flags);
--- 180,192 -----
route.rt_flags |= RTF_HOST;
if (argc > 3 && atoi(argv[3]) > 0)
route.rt_flags |= RTF_GATEWAY;
+ if (argc > 3 && !isdigit(argv[3][0])) {
+ route.rt_flags &= ~(RTF_HOST|RTF_GATEWAY); /* undo flags */
+ if (index(argv[3], 'H'))
+ route.rt_flags |= RTF_HOST;
+ if (index(argv[3], 'G'))
+ route.rt_flags |= RTF_GATEWAY;
+ }
printf("%s %s: gateway ", cmd, routename(sin->sin_addr));
sin = (struct sockaddr_in *)&route.rt_gateway;
printf("%s, flags %x\n", routename(sin->sin_addr), route.rt_flags);