Commit Graph

133 Commits

Author SHA1 Message Date
George V. Neville-Neil
c1ed96c2bb Speed up the lookup of interfaces when there are a large number
of them, such in a system with a large number of VLANs.

Submitted by: Nick Rogers
MFC after: 2 weeks
2014-04-05 22:13:32 +00:00
Gleb Smirnoff
b1b9dcae46 Remove net.link.ether.inet.useloopback sysctl tunable. It was always on by
default from the very beginning. It was placed in wrong namespace
net.link.ether, originally it had been at another wrong namespace. It was
incorrectly documented at incorrect manual page arp(8). Since new-ARP commit,
the tunable have been consulted only on route addition, and ignored on route
deletion. Behaviour of a system with tunable turned off is not fully correct,
and has no advantages comparing to normal behavior.
2013-11-05 07:32:09 +00:00
Gleb Smirnoff
876fc15d47 Fix coredump on 'arp -d'.
Submitted by:	az
Approved by:	re (kib)
2013-09-23 18:12:25 +00:00
Gleb Smirnoff
5d81d09598 Rate limit the number of remotely triggered ARP log messages
to 1 log message per second.
2013-05-11 10:51:32 +00:00
Gleb Smirnoff
9711a168b9 Retire struct sockaddr_inarp.
Since ARP and routing are separated, "proxy only" entries
don't have any meaning, thus we don't need additional field
in sockaddr to pass SIN_PROXY flag.

New kernel is binary compatible with old tools, since sizes
of sockaddr_inarp and sockaddr_in match, and sa_family are
filled with same value.

The structure declaration is left for compatibility with
third party software, but in tree code no longer use it.

Reviewed by:	ru, andre, net@
2013-01-31 08:55:21 +00:00
Gleb Smirnoff
478df1d534 Provide a sysctl switch that allows to install ARP entries
with multicast bit set. FreeBSD refuses to install such
entries since 9.0, and this broke installations running
Microsoft NLB, which are violating standards.

Tested by:	Tarasov Oleg <oleg_tarasov sg-tea.com>
2012-09-03 14:29:28 +00:00
Gleb Smirnoff
5610c8a7ac Explicitly document all variables in the net.link.ether.inet MIB. 2012-09-03 14:16:16 +00:00
Joel Dahl
8972c8b6a5 Minor spelling fixes. 2012-06-03 11:29:48 +00:00
Joel Dahl
e1656a8810 mdoc: add missing width argument to Bl -tag. 2012-06-03 06:57:47 +00:00
Gleb Smirnoff
120a742b86 Historically arp(8) did a route lookup for the entry it is
about to add, and failed if it exist and had invalid data
link type.

Later on, in r201282, this check morphed to other code, but
message "proxy entry exists for non 802 device" still left,
and now it is printed in a case if route prefix found is
equal to current address being added. In other words, when
we are trying to add ARP entry for a network address. The
message is absolutely unrelated and disappointing in this
case.

I don't see anything bad with setting ARP entries for
network addresses. While useless in usual network,
in a /31 RFC3021 it may be necessary. This, remove this code.
2012-04-02 10:44:25 +00:00
Joel Dahl
c2965cd185 mdoc: terminate quoted strings.
Reviewed by:	brueffer
2012-03-26 15:18:14 +00:00
Gleb Smirnoff
84d8f5b8d0 Do not hardcode (20*60), but use current ARP timeout value configured
in kernel.
2010-11-30 16:14:19 +00:00
Gleb Smirnoff
5d067f6cbf That should belong to r216075. Pointy hat on me. 2010-11-30 16:00:59 +00:00
Gleb Smirnoff
a98c06f1c8 Use time_uptime instead of non-monotonic time_second to drive ARP
timeouts.

Suggested by:	bde
2010-11-30 15:57:00 +00:00
Max Laier
e78c7a0a9a Cache the last result from if_indextoname for printing. This speeds up
"arp -an" when using a lot of aliases (on a single interface).

A better fix would include a better interface for if_indextoname than
getting the whole address list from the kernel just to find the one
index->name mapping.

Reported & analyzed by:	Nick Rogers
MFC after:		3 days
2010-06-11 19:35:05 +00:00
Ruslan Ermilov
929683056e Show when an ARP entry expires.
MFC after:	1 week
2010-02-15 14:29:17 +00:00
Qing Li
c7ab66020f The proxy arp entries could not be added into the system over the
IFF_POINTOPOINT link types. The reason was due to the routing
entry returned from the kernel covering the remote end is of an
interface type that does not support ARP. This patch fixes this
problem by providing a hint to the kernel routing code, which
indicates the prefix route instead of the PPP host route should
be returned to the caller. Since a host route to the local end
point is also added into the routing table, and there could be
multiple such instantiations due to multiple PPP links can be
created with the same local end IP address, this patch also fixes
the loopback route installation failure problem observed prior to
this patch. The reference count of loopback route to local end would
be either incremented or decremented. The first instantiation would
create the entry and the last removal would delete the route entry.

MFC after:	5 days
2009-12-30 21:35:34 +00:00
John Baldwin
c34169d468 Use reallocf() to simplify some logic.
MFC after:	2 weeks
2009-12-29 15:48:04 +00:00
Remko Lodder
eac295c9a0 Remove bogus char cast.
PR:		118014
Submitted by:	Gardner Bell <gbell72 at rogers dot com>
Approved by:	re (rwatson), imp (mentor, implicit)
MFC after:	immediate
2009-08-14 18:18:51 +00:00
Dag-Erling Smørgrav
aebbf030e5 Lower WARNS due to alignment issues on sparc64. 2009-06-11 10:30:30 +00:00
Dag-Erling Smørgrav
be5d11dcb0 As of sam's r175206, arp builds cleanly at WARNS level 6, but the Makefile
was never updated.  Also, clean up the macro that caused the warning in the
first place (no functional changes, just wrapped and reindented).
2009-06-11 07:50:36 +00:00
Daniel Gerzo
113eaf9bda - xref ndp(8)
PR:		docs/134053
Submitted by:	Bob Van Zant <bob@veznat.com>
MFC after:	1 week
2009-04-28 20:23:58 +00:00
Qing Li
8eca593c5a This checkin addresses a couple of issues:
1. The "route" command allows route insertion through the interface-direct
   option "-iface". During if_attach(), an sockaddr_dl{} entry is created
   for the interface and is part of the interface address list. This
   sockaddr_dl{} entry describes the interface in detail. The "route"
   command selects this entry as the "gateway" object when the "-iface"
   option is present. The "arp" and "ndp" commands also interact with the
   kernel through the routing socket when adding and removing static L2
   entries. The static L2 information is also provided through the
   "gateway" object with an AF_LINK family type, similar to what is
   provided by the "route" command. In order to differentiate between
   these two types of operations, a RTF_LLDATA flag is introduced. This
   flag is set by the "arp" and "ndp" commands when issuing the add and
   delete commands. This flag is also set in each L2 entry returned by the
   kernel. The "arp" and "ndp" command follows a convention where a RTM_GET
   is issued first followed by a RTM_ADD/DELETE. This RTM_GET request fills
   in the fields for a "rtm" object, which is reinjected into the kernel by
   a subsequent RTM_ADD/DELETE command. The entry returend from RTM_GET
   is a prefix route, so the RTF_LLDATA flag must be specified when issuing
   the RTM_ADD/DELETE messages.

2. Enforce the convention that NET_RT_FLAGS with a 0 w_arg is the
   specification for retrieving L2 information. Also optimized the
   code logic.

Reviewed by:   julian
2008-12-26 19:45:24 +00:00
Tom Rhodes
2293dac2ac Print a warning when blackhole and reject are used together.
Update arp.8 manual page syntax.

PR:		125896
Submitted by:	Marc Olzheim <marcolz@stack.nl>
Approved by:	sam
2008-12-25 06:44:19 +00:00
Qing Li
6e6b3f7cbc This main goals of this project are:
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
2008-12-15 06:10:57 +00:00
Ruslan Ermilov
3d172894a5 Spell "blackhole" correctly and fix one grammar nit. 2008-03-24 22:57:55 +00:00
Sam Leffler
e653f1f0f4 add reject+blackhole keywords to install entries with RTF_BLACKHOLE
and RTF_REJECT, respectively

PR:		bin/79228
Submitted by:	Dan Lukes <dan@obluda.cz>
MFC after:	2 weeks
2008-03-18 21:45:27 +00:00
Sam Leffler
0c80179c55 quiet compiler complaint about comparing &v against NULL 2008-01-10 04:26:44 +00:00
John Birrell
13959da95c Reduce the WARNS levels in a couple of places so that we can enable
-Werror at higher WARNS levels like we did before gcc4 was imported.
2007-11-18 00:29:36 +00:00
Gleb Smirnoff
a090f21663 net.link.ether.inet.prune_intvl no longer exists. 2007-03-28 11:06:50 +00:00
Kevin Lo
d069140339 Use sizeof() for calculating the buffer size instead of hard-coded values. 2007-03-06 09:32:41 +00:00
Gleb Smirnoff
06274cee44 - Before doing ioctl(SIOCGIFNETMASK) put the proper IP address into the ifreq,
to obtain correct netmask in case of interface with multiple aliases.
- While here, remove a comment with a bad idea.

PR:		bin/42120
Submitted by:	Dmitry Frolov <frolov riss-telecom.ru>
2006-10-13 12:38:43 +00:00
Ruslan Ermilov
bc84aa4ba3 Markup fixes. 2006-09-29 17:57:04 +00:00
Ruslan Ermilov
f6385e481e Sync utility's usage() with manpage's SYNOPSIS. 2006-09-29 16:07:44 +00:00
Yaroslav Tykhiy
81cd89bd43 Enumerate all cases where -i is applicable.
MFC after:	3 days
2006-08-17 07:14:01 +00:00
Gleb Smirnoff
a47c388cce Refuse to install invalid ARP entries.
Submitted by:	Vitaliy Ovsyannikov <V.Ovsyannikov kr.ru>
2006-02-09 12:49:39 +00:00
Brooks Davis
582fa422ec Update usage to reflect the fact that the -d -a now accepts -i <interface>.
Reminded by:	ru
Pointy hat:	brooks
2006-01-10 16:15:58 +00:00
Brooks Davis
0836985219 Allow the -i <interface> option with -d -a to allow all arp entries for
a given interface to be removed.
2006-01-10 05:17:16 +00:00
Gleb Smirnoff
3939390679 Add a knob to suppress logging of attempts to modify
permanent ARP entries.

Submitted by:	Andrew Alcheyev <buddy telenet.ru>
2005-12-18 19:11:56 +00:00
Ruslan Ermilov
34c96b563e Improve the documentation of "proxyall" knob, somewhat: we do not
proxy for hosts that are reachable through the same interface the
request came in from.  This feature is mainly for hosts reachable
through some P2P link, e.g. the gif(4) tunnel.
2005-11-24 13:44:42 +00:00
Gleb Smirnoff
44ec3c8c44 Some fixes for last commit.
Submitted by:	ru
2005-11-11 09:31:23 +00:00
Gleb Smirnoff
1a5d3a92f2 - Document last change to ARP behavior.
- Document several undocumented sysctl variables.
- Fix spelling of few diagnostics.
2005-11-10 11:35:53 +00:00
Andrew Thompson
9af9b983e1 List IFT_BRIDGE as a valid type so that arp entries can be properly deleted.
Submitted by:	Michal Mertl <mime^traveller.cz>
2005-11-03 00:56:43 +00:00
Ruslan Ermilov
f3f8b226ef Commit some cosmetic fixes I developed some time ago, mostly style but
one functional change (fixed exit status from the "get" operation).
2005-06-09 15:27:46 +00:00
Gleb Smirnoff
cf77958920 Fix exit status. In rev. 1.48 return logic of rtmsg() was confused. This
made arp(8) command exit status reversed for -s and -S.

Reported by:	sem
MFC after:	2 weeks
2005-06-09 15:00:31 +00:00
Maxim Konovalov
19beed5e2e o Reorganize the previous delta to make it more style(9) compliant.
Submitted by:	ru

o Reduce an amount of memory we ask in advance.
2005-01-24 17:01:48 +00:00
Maxim Konovalov
66658902ed o Try hard to guess a buffer size for a fast growing routing table.
An approach taken from killall/killall.c.

PR:		bin/76075
Submitted by:	Dmitrij Tejblum
MFC after:	3 weeks
2005-01-24 13:27:24 +00:00
Ruslan Ermilov
596e374dac For VLAN interfaces, print MAC addresses properly.
(Broken in rev. 1.52.)

PR:		75471
Submitted by:	Jon Simola
MFC after:	3 days
2004-12-24 22:16:38 +00:00
Warner Losh
23717fc46a Per letter dated July 22, 1999, delete clause 3 from code directly
from Berkeley.
2004-08-07 04:19:37 +00:00
Ruslan Ermilov
07bfccd71e Mechanically kill hard sentence breaks. 2004-07-02 23:13:00 +00:00