From jc@irbs.irbs.com Fri Oct 4 09:13:10 1996 Received: from irbs.irbs.com (irbs.com [199.182.75.129]) by freefall.freebsd.org (8.7.5/8.7.3) with ESMTP id JAA26477 for ; Fri, 4 Oct 1996 09:13:06 -0700 (PDT) Received: (from jc@localhost) by irbs.irbs.com (8.7.6/8.7.3) id MAA25241; Fri, 4 Oct 1996 12:12:22 -0400 (EDT) Message-Id: <199610041612.MAA25241@irbs.irbs.com> Date: Fri, 4 Oct 1996 12:12:22 -0400 (EDT) From: John Capo Reply-To: jc@irbs.com To: FreeBSD-gnats-submit@freebsd.org Subject: Routed byte order problem X-Send-Pr-Version: 3.2 >Number: 1722 >Category: bin >Synopsis: Routed byte order problem >Confidential: no >Severity: non-critical >Priority: medium >Responsible: wollman >State: closed >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Fri Oct 4 09:20:01 PDT 1996 >Closed-Date: Tue Dec 17 08:04:11 PST 1996 >Last-Modified: Tue Dec 17 08:04:53 PST 1996 >Originator: John Capo >Release: FreeBSD 2.2 i386 >Organization: >Environment: >Description: Routed expects networks to be in host order and addresses to be in network order. parms.c:getnet() and trace.c:trace_if() get it wrong. There may be other places also. routed: bad "subnet=199.182.75.128/28" in "subnet=199.182.75.128/28" Add interface tun0 199.182.75.131 -->1.1.9.192/32 >How-To-Repeat: Try to use subnet=somenet/somemask in /etc/gateways or with -P. Configure a point-to-point and turn on net.inet.ip.forwarding. >Fix: Index: parms.c =================================================================== RCS file: /usr/cvs/src/sbin/routed/parms.c,v retrieving revision 1.1.1.1 diff -c -r1.1.1.1 parms.c *** parms.c 1996/09/16 16:51:31 1.1.1.1 --- parms.c 1996/10/04 15:33:54 *************** *** 574,580 **** if (np != 0) { in.s_addr = (naddr)np->n_net; } else if (inet_aton(name, &in) == 1) { ! HTONL(in.s_addr); } else { return 0; } --- 574,580 ---- if (np != 0) { in.s_addr = (naddr)np->n_net; } else if (inet_aton(name, &in) == 1) { ! NTOHL(in.s_addr); } else { return 0; } *************** *** 584,590 **** * looked at them yet. */ mask = std_mask(in.s_addr); ! if ((~mask & ntohl(in.s_addr)) != 0) mask = HOST_MASK; } else { mask = (naddr)strtoul(mname, &p, 0); --- 584,590 ---- * looked at them yet. */ mask = std_mask(in.s_addr); ! if ((~mask & in.s_addr) != 0) mask = HOST_MASK; } else { mask = (naddr)strtoul(mname, &p, 0); *************** *** 594,603 **** } if (mask != 0 && in.s_addr == RIP_DEFAULT) return 0; ! if ((~mask & ntohl(in.s_addr)) != 0) return 0; ! *addrp = in.s_addr; *maskp = mask; return 1; } --- 594,604 ---- } if (mask != 0 && in.s_addr == RIP_DEFAULT) return 0; ! ! if ((~mask & in.s_addr) != 0) return 0; ! *addrp = htonl(in.s_addr); *maskp = mask; return 1; } Index: trace.c =================================================================== RCS file: /usr/cvs/src/sbin/routed/trace.c,v retrieving revision 1.1.1.1 diff -c -r1.1.1.1 trace.c *** trace.c 1996/09/16 16:51:32 1.1.1.1 --- trace.c 1996/10/04 16:05:33 *************** *** 498,506 **** (void)fprintf(ftrace, "%s interface %-4s ", act, ifp->int_name); (void)fprintf(ftrace, "%-15s-->%-15s ", naddr_ntoa(ifp->int_addr), ! addrname(htonl((ifp->int_if_flags & IFF_POINTOPOINT) ? ifp->int_dstaddr ! : ifp->int_net), ifp->int_mask, 1)); if (ifp->int_metric != 0) (void)fprintf(ftrace, "metric=%d ", ifp->int_metric); --- 498,506 ---- (void)fprintf(ftrace, "%s interface %-4s ", act, ifp->int_name); (void)fprintf(ftrace, "%-15s-->%-15s ", naddr_ntoa(ifp->int_addr), ! addrname((ifp->int_if_flags & IFF_POINTOPOINT) ? ifp->int_dstaddr ! : htonl(ifp->int_net), ifp->int_mask, 1)); if (ifp->int_metric != 0) (void)fprintf(ftrace, "metric=%d ", ifp->int_metric); >Release-Note: >Audit-Trail: State-Changed-From-To: open->analyzed State-Changed-By: wollman State-Changed-When: Fri Oct 4 13:26:03 PDT 1996 State-Changed-Why: Fix submitted back to author; now awaiting updated release. Responsible-Changed-From-To: freebsd-bugs->wollman Responsible-Changed-By: wollman Responsible-Changed-When: Fri Oct 4 13:26:03 PDT 1996 Responsible-Changed-Why: My area. State-Changed-From-To: analyzed->closed State-Changed-By: wollman State-Changed-When: Tue Dec 17 08:04:11 PST 1996 State-Changed-Why: We believe this to be fixed in the latest version of routed. >Unformatted: