summaryrefslogtreecommitdiffstats
path: root/sbin/route/route.c
Commit message (Collapse)AuthorAgeFilesLines
* route(8): make WARNS=3 cleanuqs2010-02-271-148/+154
| | | | | | | | | | | | - add static and const where appropriate - check pointers against NULL - minor styling nits - it is actually WARNS=6 clean for non-strict alignment platforms This is shamelessly stolen from DragonflyBSD and reduces our diff. PR: bin/140078 Approved by: ed (co-mentor)
* ANSIfy functions declarations, adjust prototypes. Rename local variablecharnier2009-08-251-75/+58
| | | | to not conflict with err().
* Extend route command:kmacy2009-04-141-11/+20
| | | | | | | | | | - add show as alias for get - add weights to allow mpath to do more than equal cost - add sticky / nostick to disable / re-enable per-connection load balancing This adds a field to rt_metrics_lite so network bits of world will need to be re-built. Reviewed by: jeli & qingli
* Fix broken case where caused by last patch whererrs2009-04-111-1/+2
| | | | | a user uses 0.0.0.0/0 as an alias for default. Obtained from: Mykola Dzham (freebsd@levsha.org.ua)
* Ok, looking at the solution a bit closer, the levelrrs2009-04-061-4/+4
| | | | | | | | | | | calculation was too agressive. Instead we should only look at each nibble. This makes it so we make 10.2.0.0 become 10.2/16 NOT 10.2/17. Need to explore the non-cidr address issue. The two may not be seperable.. MFC after: 1 week
* Class based addressing went out in the early 90's. Basicallyrrs2009-04-061-16/+17
| | | | | | | | | | | | | | | | | | | | | | | | if a entry is not route add -net xxx/bits then we should use the addr (xxx) to establish the number of bits by looking at the first non-zero bit. So if we enter route add -net 10.1.1.0 10.1.3.5 this is the same as doing route add -net 10.1.1.0/24 Since the 8th bit (zero counting) is set to 1 we set bits to 32-8. Users can of course still use the /x to change this behavior or in cases where the network is in the trailing part of the address, a "netmask" argument can be supplied to override what is established from the interpretation of the address itself. e.g: route add -net 10.1.1.8 -netmask 0xff00ffff should overide and place the proper CIDR mask in place. PR: 131365 MFC after: 1 week
* Fix regression introduced in rev. 173124:mav2009-01-181-26/+27
| | | | | | 0.0.0.0/1 is not the same as 0.0.0.0/0. MFC after: 1 month
* This main goals of this project are:qingli2008-12-151-6/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 1. separating L2 tables (ARP, NDP) from the L3 routing tables 2. removing as much locking dependencies among these layers as possible to allow for some parallelism in the search operations 3. simplify the logic in the routing code, The most notable end result is the obsolescent of the route cloning (RTF_CLONING) concept, which translated into code reduction in both IPv4 ARP and IPv6 NDP related modules, and size reduction in struct rtentry{}. The change in design obsoletes the semantics of RTF_CLONING, RTF_WASCLONE and RTF_LLINFO routing flags. The userland applications such as "arp" and "ndp" have been modified to reflect those changes. The output from "netstat -r" shows only the routing entries. Quite a few developers have contributed to this project in the past: Glebius Smirnoff, Luigi Rizzo, Alessandro Cerri, and Andre Oppermann. And most recently: - Kip Macy revised the locking code completely, thus completing the last piece of the puzzle, Kip has also been conducting active functional testing - Sam Leffler has helped me improving/refactoring the code, and provided valuable reviews - Julian Elischer setup the perforce tree for me and has helped me maintaining that branch before the svn conversion
* Fix printing of sockaddr prefixes in verbose mode.ru2008-04-101-1/+1
| | | | | | PR: bin/122403 Submitted by: az MFC after: 3 days
* In route.c in newroute() there's a call to exit(0) if the command wasremko2008-03-221-1/+1
| | | | | | | | | | 'get'. Since rtmsg() always gets called and returns 0 on success and -1 on failure, it's possible to exit with a suitable exit code by calling exit(ret != 0) instead, as is done at the end of newroute(). PR: bin/112303 Submitted by: bruce@cran.org.uk MFC after: 1 week
* Don't mask the address in inet_makenetandmask() according to what classmtm2007-11-041-1/+0
| | | | | | it appears to be in: there is also CIDR. Noticed by: tegge
* Fix an error in bit shifting logic for network addresses. The routemtm2007-10-291-20/+24
| | | | | | | | | | | | | | | command would add incorrect routing entries if network numbers weren't fully "spelled" out according to their class. For example: # route add 128.0/16 (works) # route add 128/16 (doesn't work) # route add 193.0.0/24 (works) # route add 193/24 (doesn't work) Also, rework the way a netmask is deduced from network number if it [netmask] is not specified. Submitted by: Nuno Antunes <nuno.antunes@gmail.com> (mostly) MFC after: 1 week
* Introduce "route del" as an alias to "route delete".tobez2005-09-281-0/+1
| | | | Reviewed by: arch
* - Understand EADDRINUSE, and forget EDQUOT. [1]glebius2005-09-211-2/+6
| | | | | | | | | - Add description for EEXIST. - Change description for ENOBUFS. Routing socket can return this error for many different reasons, including general memory shortage, mbuf memory shortage and rtentry zone. PR: kern/64090 [1]
* - do DNS lookup for symbolic names specified for a destinationume2005-05-231-4/+5
| | | | | | | | | | or gateway. - improves error reporting using gai_strerror(3) instead of printing "bad value". - remove "0" for servname argument for getaddrinfo(3). Submitted by: Andreas Kohn <andreas __at__ syndrom23.de> MFC after: 1 week
* NI_WITHSCOPEID cleanup. Neither RFC 2553 nor RFC 3493 definesume2005-05-131-6/+0
| | | | | NI_WITHSCOPEID, and our getaddrinfo(3) does nothing special for it, now.
* shutdown(2)'s how argument as 0 is nowhere near as cool as SHUT_RDjmallett2005-05-111-2/+2
|
* When parsing an argument as an address in getaddr(), heed the -host optionbms2004-06-161-1/+1
| | | | | | | in all cases. The failure mode in the PR is easily reproducible without this patch. PR: bin/43139
* Teach route(8) how to deal with root being in a prison. If prisoncsjp2004-05-071-0/+4
| | | | | | | | | | root is allowed to create raw sockets, then they will be able to create routing sockets, too. However prison-root is not able to manipulate routing tables. So when route(8) attempts to write to a routing socket and recieves EPERM from the kernel, exit rather than moving on with execution. Approved by: bmilekic (mentor)
* Link state change notification of ethernet media to the routing socket.andre2004-05-031-1/+14
| | | | | | | o Print the link state for interface messages in monitor mode. No objections by: sam, wpaul, ru, bms Brucification by: bde
* For both ifconfig and route if we didn't get enough memory from theambrisko2004-04-301-4/+22
| | | | | | | | | | | prior sysctl due to the structure growing between calls try again. Also try again for deleting routes if things fail. We've seen route -f fail this way which does not actually flush all routes. This fixes it. It will whine but it will do the work. PR: 56732 Obtained from: IronPort
* Replace ROUNDUP/ADVANCE with SA_SIZEluigi2004-04-131-8/+4
|
* Remove advertising clause from University of California Regent's license,markm2004-04-091-4/+0
| | | | | | per letter dated July 22, 1999. Approved by: core, imp
* link-local multicast address must be converted to KAME specificume2003-12-071-1/+1
| | | | | | | embeded scopeid form. Reported by: dwmalone MFC after: 3 days
* There is an undocument feature that ``route -vnd flush'' printsru2003-04-161-1/+1
| | | | | a nice dump of the entire routing table. Allow non-root users to see it too.
* Kill #ifdef NS codepeter2003-03-051-110/+0
|
* Since route(8) itself is no longer setuid, we can get a meaningfulkbyanc2003-01-251-1/+1
| | | | | | | | answer for the euid. As a result, fix it such that setuid scripts or programs may call route(8) to do work on their behalf. Reviewed by: ru MFC after: 3 days
* Don't have -prefixlen 128 on host routes.ume2002-06-081-8/+5
| | | | Obtained from: KAME
* Avoid construction which results in label at end of block.wollman2002-05-301-2/+6
|
* Respect -q with "add" and "delete". Document who respects -q.ru2002-05-251-30/+31
| | | | PR: bin/38531
* Allow prefix/prefixlen syntax for IPv6 to have consistencyume2002-05-211-15/+22
| | | | with IPv4.
* Have RTF_HOST for /128 destionation.ume2002-05-211-4/+9
|
* Try to guess prefixlen for guessable cases.ume2002-05-201-0/+33
| | | | | | | | - /0 if matches ::/128 - /64 if matches 2000::/3 and lowermost 64 bit is all 0 - /128 if matches 2000::/3 and lowermost 64 bit is non-zero 0 Obtained from: KAME/NetBSD
* o remove __Pimp2002-03-211-3/+3
| | | | o remove main prototype
* Remove 'register' keyword.obrien2002-03-201-30/+30
| | | | | | It does not help modern compilers, and some may take some hit from it. (I also found several functions that listed *every* of its 10 local vars with "register" -- just how many free registers do people think machines have?)
* Introduce an interface announcement message for the routingru2002-01-181-1/+24
| | | | | | | | | socket so that routing daemons and other interested parties know when an interface is attached/detached. PR: kern/33747 Obtained from: NetBSD MFC after: 2 weeks
* Bring in latest CSRG revisions to this file.ru2001-10-171-11/+11
|
* Synch with NetBSD and OpenBSD.ru2001-08-311-2/+2
| | | | | | | | | | Allow non-superuser to open, listen to, and send safe commands on the routing socket. Superuser priviledge is required for all commands but RTM_GET. Lose `setuid root' bit of route(8). Reviewed by: wollman, dd
* Handle snprintf() returning < 0 (not just -1)brian2001-08-201-0/+4
| | | | MFC after: 2 weeks
* Handle snprintf() returning -1.brian2001-08-201-4/+6
| | | | MFC after: 2 weeks
* Due to the documented bug in inet_aton(3), it wasn't possibleru2001-07-111-2/+3
| | | | | | | | | | | to use 0xffffffff (INADDR_NONE) as a netmask value. The fix is to use inet_addr(3) which doesn't suffer from this problem. PR: bin/28873 Also, while here, fixed the bug when netmask value was ignored (RTF_HOST flag was set) if the "destination gateway netmask" syntax is used, e.g. ``route add 1.2.3.4 127.1 255.255.255.255''.
* Allow route(8) to create "proxy only" published ARP entries.ru2001-06-121-1/+10
| | | | | PR: bin/12357 Submitted by: Craig Leres <leres@ee.lbl.gov>
* Fixed the -iface breakage introduced with the latest KAME mergeru2001-06-121-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | in revision 1.48. It is pretty valid and often feasible to use a non-point-to-point interface as the gateway. One might, for example, use this to route some hosts through an ARP on a local interface, without having to assign an additional IP address: Script started on Tue Jun 12 16:16:09 2001 # ifconfig rl0 inet rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 inet 192.168.4.115 netmask 0xffffff00 broadcast 192.168.4.255 # netstat -arn -finet | grep -w rl0 192.168.4 link#1 UC 3 0 rl0 => 192.168.4.65 0:d0:b7:16:9c:c6 UHLW 1 0 rl0 1197 # route add -net 192.168.100 -iface rl0 add net 192.168.100: gateway rl0 # ping 192.168.100.1 PING 192.168.100.1 (192.168.100.1): 56 data bytes 64 bytes from 192.168.100.1: icmp_seq=0 ttl=255 time=0.551 ms 64 bytes from 192.168.100.1: icmp_seq=1 ttl=255 time=0.268 ms ^C --- 192.168.100.1 ping statistics --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max/stddev = 0.268/0.410/0.551/0.142 ms # netstat -arn -finet | grep -w rl0 192.168.4 link#1 UC 3 0 rl0 => 192.168.4.65 0:d0:b7:16:9c:c6 UHLW 1 0 rl0 1165 192.168.100 link#1 UCSc 1 0 rl0 => 192.168.100.1 0:d0:b7:16:9c:c6 UHLW 1 4 rl0 1192 Script done on Tue Jun 12 16:17:12 2001
* Sync with recent KAME.ume2001-06-111-120/+114
| | | | | | | | | | | | | | | | | | This work was based on kame-20010528-freebsd43-snap.tgz and some critical problem after the snap was out were fixed. There are many many changes since last KAME merge. TODO: - The definitions of SADB_* in sys/net/pfkeyv2.h are still different from RFC2407/IANA assignment because of binary compatibility issue. It should be fixed under 5-CURRENT. - ip6po_m member of struct ip6_pktopts is no longer used. But, it is still there because of binary compatibility issue. It should be removed under 5-CURRENT. Reviewed by: itojun Obtained from: KAME MFC after: 3 weeks
* When changing an indirect route, kernel routing code allocatesru2001-06-081-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | a route to the gateway and caches it in the route structure. It may happen (if the routing table is screwed) that the gateway route is the same route as the one being modified, in which case a kernel reports EDQUOT. Be more verbose about this: # route add -net 10 192.168.4.65 add net 10: gateway 192.168.4.65 # netstat -rn -finet Routing tables Internet: Destination Gateway Flags Refs Use Netif Expire default 192.168.4.65 UGSc 1 7 rl0 10 192.168.4.65 UGSc 0 0 rl0 127.0.0.1 127.0.0.1 UH 0 178 lo0 192.168.4 link#1 UC 2 0 rl0 => 192.168.4.65 0:d0:b7:16:9c:c6 UHLW 2 0 rl0 1123 Before: # route change -net 10 10.0.0.1 route: writing to routing socket: Disc quota exceeded change net 10: gateway 10.0.0.1: Disc quota exceeded After: # ./route change -net 10 10.0.0.1 route: writing to routing socket: Disc quota exceeded change net 10: gateway 10.0.0.1: gateway uses the same route PR: bin/1093, misc/26833
* Change the host/bits syntax introduced in route.c,v 1.24 to theru2001-06-081-6/+5
| | | | | | | net/bits syntax, for consistency with netstat(1) in particular. OK'ed by: phk MFC after: 1 week
* - Exit 1 if "add", "change", or "delete" operation fails.ru2001-06-071-10/+8
| | | | | | | | | | | | PR: bin/12489 - Use inet_ntoa(3) where it should have been used. This part of code simply wasn't converted to the "new" style after the routename() function was converted from the protocol-generic version to protocol-specific version in CSRG revision 5.6. MFC after: 1 week
* Add a couple of newlines in the output from route monitorphk2001-01-151-2/+4
|
* Add `_PATH_DEVZERO'.obrien2000-12-091-1/+2
| | | | Use _PATH_* where where possible.
* Interpret the address argument as network-type address for `destination'ru2000-09-291-13/+12
| | | | | | argument only. Before that, the `route add default gateway' first tried the `gateway' as network address and passed its name to getnetbyname(3), which in the BIND resolution case does the T_PTR lookup on that name.
OpenPOWER on IntegriCloud