?? lsrr.patches
字號:
From owner-ineng-interest@venera.isi.edu Thu Aug 3 13:17:46 1989Received: from venera.isi.edu by sccgate (5.61/1.34) id AA19575; Thu, 3 Aug 89 13:17:40 -0400Received: by venera.isi.edu (5.61/5.61+local) id <AA08207>; Thu, 3 Aug 89 07:40:09 -0700Posted-Date: Thu, 03 Aug 89 10:40:06 EDTReceived-Date: Thu, 3 Aug 89 07:40:03 -0700Received: from FORNAX.ECE.CMU.EDU by venera.isi.edu (5.61/5.61+local) id <AA08200>; Thu, 3 Aug 89 07:40:03 -0700Received: by fornax.ece.cmu.edu (5.54-ECE2/5.17) id AA20308; Thu, 3 Aug 89 10:40:08 EDTFrom: Matt Mathis <mathis@fornax.ece.cmu.edu>Message-Id: <8908031440.AA20308@fornax.ece.cmu.edu>To: ietf@venera.isi.eduCc: van@helios.ee.lbl.govSubject: 3 Party tracerouteDate: Thu, 03 Aug 89 10:40:06 EDTStatus: RAttached below is a patch file for Van Jacobson's traceroute, to add supportthe IP LSRR (Loose Source Record Route) option in addition to the standardtraceroute/ttl stuff.This is useful for asking how somebody else reaches a particular target.For example: "traceroute -g 10.3.0.5 128.182.0.0" shows the path from theCambridge Mailbridge to PSC. This works from (almost) anywhere!traceroute -g 192.5.146.4 -g 10.3.0.5 35.0.0.0Shows how the Cambridge Mailbrige reaches Merit, by using PSC to reach theMailbridge.This version is substantially cleaned up by Jeff Honig at Cornell. Thanks!Van Jacobson's original traceroute (spring 1988) supported this feature,but he removed it due to pressure from people with broken gateways. At theJuly 1989 IETF this issue was discussed, and the only objection noted waslater retracted with "I've been trying to get my management to upgrade ourgateways for a long time, maybe this will force the issue". I expect Van'straceroute to support LSRR sometime soon. This patch should be consideredinterim.The Van's traceroute is available with anonymous ftp from ftp.ee.lbl.gov.It does require kernel mods (Sorry, I don't have object modules.)Caveats:LSRR must be fully supported at least as far as the specified gateway. Thisseems to be the case for the NSFnet, ARPAnet and all reasonably recentcommercial gateways/routers.LSRR must be supported (recognized as completed) or ignored between thespecified gateway to the final target. This seems to be the case almostevery where else.THERE MAY STILL BE GATEWAYS OUT IN THE INTERNET WHICH HAVE FATAL BUGS IN THECODE TO PROCESS ROUTING OPTIONS. Be nice to your neighbors.All of the the usual disclaimers about free code apply.--MM--*** /tmp/,RCSt1a01058 Mon Jul 31 22:20:06 1989--- traceroute.c Mon Jul 31 22:14:29 1989****************** 202,210 ****--- 202,212 ---- #include <netinet/in_systm.h> #include <netinet/in.h> #include <netinet/ip.h>+ #include <netinet/ip_var.h> #include <netinet/ip_icmp.h> #include <netinet/udp.h> #include <netdb.h>+ #include <ctype.h> #define MAXPACKET 65535 /* max ip packet size */ #ifndef MAXHOSTNAMELEN****************** 223,228 ****--- 225,231 ---- #define Fprintf (void)fprintf #define Sprintf (void)sprintf #define Printf (void)printf+ extern int errno; extern char *malloc(); extern char *inet_ntoa();****************** 265,271 **** int nflag; /* print addresses numerically */ char usage[] =! "Usage: traceroute [-dnrv] [-w wait] [-m max_ttl] [-p port#] [-q nqueries] [-t tos] [-s src_addr] host [data size]\n"; main(argc, argv)--- 268,274 ---- int nflag; /* print addresses numerically */ char usage[] =! "Usage: traceroute [-dnrv] [-w wait] [-m max_ttl] [-p port#] [-q nqueries] [-t tos] [-s src_addr] [-g gateway] host [data size]\n"; main(argc, argv)****************** 280,286 ****--- 283,295 ---- int seq = 0; int tos = 0; struct hostent *hp;+ int lsrr = 0;+ u_long gw;+ u_char optlist[MAX_IPOPTLEN], *oix; + oix = optlist;+ bzero(optlist, sizeof(optlist));+ argc--, av++; while (argc && *av[0] == '-') { while (*++av[0])****************** 288,293 ****--- 297,334 ---- case 'd': options |= SO_DEBUG; break;+ case 'g':+ argc--, av++;+ if ((lsrr+1) >= ((MAX_IPOPTLEN-IPOPT_MINOFF)/sizeof(u_long))) {+ Fprintf(stderr,"No more than %d gateways\n",+ ((MAX_IPOPTLEN-IPOPT_MINOFF)/sizeof(u_long))-1);+ exit(1);+ }+ if (lsrr == 0) {+ *oix++ = IPOPT_LSRR;+ *oix++; /* Fill in total length later */+ *oix++ = IPOPT_MINOFF; /* Pointer to LSRR addresses */+ }+ lsrr++;+ if (isdigit(*av[0])) {+ gw = inet_addr(*av);+ if (gw) {+ bcopy(&gw, oix, sizeof(u_long));+ } else {+ Fprintf(stderr, "Unknown host %s\n",av[0]);+ exit(1);+ }+ } else {+ hp = gethostbyname(av[0]);+ if (hp) {+ bcopy(hp->h_addr, oix, sizeof(u_long));+ } else {+ Fprintf(stderr, "Unknown host %s\n",av[0]);+ exit(1);+ }+ }+ oix += sizeof(u_long);+ goto nextarg; case 'm': argc--, av++; max_ttl = atoi(av[0]);****************** 411,416 ****--- 452,475 ---- perror("traceroute: raw socket"); exit(5); }+ + if (lsrr > 0) {+ lsrr++;+ optlist[IPOPT_OLEN]=IPOPT_MINOFF-1+(lsrr*sizeof(u_long));+ bcopy((caddr_t)&to->sin_addr, oix, sizeof(u_long));+ oix += sizeof(u_long);+ while ((oix - optlist)&3) oix++; /* Pad to an even boundry */+ + if ((pe = getprotobyname("ip")) == NULL) {+ perror("traceroute: unknown protocol ip\n");+ exit(10);+ }+ if ((setsockopt(sndsock, pe->p_proto, IP_OPTIONS, optlist, oix-optlist)) < 0) {+ perror("traceroute: lsrr options");+ exit(5);+ }+ }+ #ifdef SO_SNDBUF if (setsockopt(sndsock, SOL_SOCKET, SO_SNDBUF, (char *)&datalen, sizeof(datalen)) < 0) {++++++++++++>From owner-ineng-interest@venera.isi.edu Tue Aug 8 18:22:35 1989Received: from venera.isi.edu by sccgate (5.61/1.34) id AA25608; Tue, 8 Aug 89 18:22:26 -0400Received: by venera.isi.edu (5.61/5.61+local) id <AA12406>; Tue, 8 Aug 89 13:58:10 -0700Posted-Date: Tue, 8 Aug 89 15:58:25 -0500Received-Date: Tue, 8 Aug 89 13:58:06 -0700Received: from uxc.cso.uiuc.edu by venera.isi.edu (5.61/5.61+local) id <AA12402>; Tue, 8 Aug 89 13:58:06 -0700Received: by uxc.cso.uiuc.edu (5.61+/IDA-1.2.8) id AA28286; Tue, 8 Aug 89 15:58:25 -0500Date: Tue, 8 Aug 89 15:58:25 -0500From: "Paul Pomes (I'm the NRA!)" <paul@uxc.cso.uiuc.edu>Message-Id: <8908082058.AA28286@uxc.cso.uiuc.edu>To: ietf@venera.isi.edu, mathis@fornax.ece.cmu.eduSubject: new traceroute man page w. IP LSRRCc: van@helios.ee.lbl.govStatus: R.\" Copyright (c) 1988 The Regents of the University of California..\" All rights reserved..\".\" Redistribution and use in source and binary forms are permitted.\" provided that the above copyright notice and this paragraph are.\" duplicated in all such forms and that any documentation,.\" advertising materials, and other materials related to such.\" distribution and use acknowledge that the software was developed.\" by the University of California, Berkeley. The name of the.\" University may not be used to endorse or promote products derived.\" from this software without specific prior written permission..\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR.\" IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED.\" WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE..\".\" $Header: traceroute.8,v 1.1 89/02/28 20:46:12 van Exp $.\".TH TRACEROUTE 8 "February 28, 1989".UC 6.SH NAMEtraceroute \- print the route packets take to network host.SH SYNOPSIS.B traceroute[.B \-mmax_ttl] [.B \-n] [.B \-pport] [.B \-qnqueries] [.B \-r] [.B \-ssrc_addr] [.B \-gaddr] [.B \-ttos] [.B \-wwaittime].I host
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -