Commit Graph

21 Commits

Author SHA1 Message Date
hrs
0796dbc180 - Improve interface list handling. The rtadvd(8) now supports dynamically-
added/removed interfaces in a more consistent manner and reloading the
  configuration file.

- Implement burst unsolicited RA sending into the internal RA timer framework
  when AdvSendAdvertisements and/or configuration entries are changed as
  described in RFC 4861 6.2.4.  This fixes issues that make termination of the
  rtadvd(8) daemon take very long time.

  An interface now has three internal states, UNCONFIGURED, TRANSITIVE, or
  CONFIGURED, and the burst unsolicited sending happens in TRANSITIVE.
  See rtadvd.h for the details.

- rtadvd(8) now accepts non-existent interfaces as well in the command line.

- Add control socket support and rtadvctl(8) utility to show the RA information
  in rtadvd(8).  Dumping by SIGUSR1 has been removed in favor of it.
2011-07-17 19:24:54 +00:00
hrs
cdcbea6ad2 - Refactoring the interface list. It now supports dynamically
added/removed interfaces in a more consistent manner and reloading
  the configuration file.

- Add initial support for control socket.  RA information in the
  daemon can be obtained by rtadvctl(8) instead of SIGUSR1 in a similar
  manner to ifconfig(8).  The information dump has been removed in favor of it.

  (reload the configuration file)
  # rtadvctl reload

  (show RA messages being sent on each interfaces)
  # rtadvctl show
  em0: flags=<UP,CONFIGURED,PERSIST> status=<RA_SEND> mtu 1280
        DefaultLifetime: 30m
        MinAdvInterval/MaxAdvInterval: 3m20s/3m20s
        AdvLinkMTU: <none>, Flags: O, Preference: medium
        ReachableTime: 0s, RetransTimer: 0s, CurHopLimit: 64
        AdvIfPrefixes: yes

  (show RA messages being sent only on em0)
  # rtadvctl show em0

  (rtadvctl -v show provides additional information)
  # rtadvctl -v show em0
  em0: flags=<UP,CONFIGURED,PERSIST> status=<RA_SEND> mtu 1280
        DefaultLifetime: 30m
        MinAdvInterval/MaxAdvInterval: 3m20s/3m20s
        AdvLinkMTU: <none>, Flags: O, Preference: medium
        ReachableTime: 0s, RetransTimer: 0s, CurHopLimit: 64
        AdvIfPrefixes: yes
        Prefixes (1):
          2001:db8:1::/64 (CONFIG, vltime=30d, pltime=7d, flags=LA)
        RDNSS entries:
          2001:db8:1::128 (ltime=2m40s)

  (stop rtadvd)
  # rtadvctl shutdown

  A remaining issue when reloading the configuration file is that
  during that period rtadvd cannot communicate with rtadvctl due to some
  additional RA sending for graceful shutdown.  This will be fixed later.
2011-07-14 10:09:58 +00:00
hrs
c74259338a Add sanity check for ifm_version in struct if_msghdr. 2011-07-04 03:19:06 +00:00
hrs
90aa2cef03 - Check RTM_VERSION.
- Fix WARNS.
2011-06-16 12:57:33 +00:00
hrs
10df0af5a5 - Implement RDNSS and DNSSL options (RFC 6106, IPv6 Router Advertisement
Options for DNS Configuration) into rtadvd(8) and rtsold(8).  DNS
  information received by rtsold(8) will go to resolv.conf(5) by
  resolvconf(8) script.  This is based on work by J.R. Oldroyd (kern/156259)
  but revised extensively[1].

- rtadvd(8) now supports "noifprefix" to disable gathering on-link prefixes
  from interfaces when no "addr" is specified[2].  An entry in rtadvd.conf
  with "noifprefix" + no "addr" generates an RA message with no prefix
  information option.

- rtadvd(8) now supports RTM_IFANNOUNCE message to fix crashes when an
  interface is added or removed.

- Correct bogus ND_OPT_ROUTE_INFO value to one in RFC 4191.

Reviewed by:	bz[1]
PR:		kern/156259 [1]
PR:		bin/152458 [2]
2011-06-06 03:06:43 +00:00
hrs
ba519ba6ac Support dynamically-added/removed interfaces. The rtadvd(8) daemon detects an
interface addition/removal via RTM_IFANNOUNCE message and update the internal
structure.

TO BE FIXED:
 The advertising interface list still depends on the command line argument.
 The configuration file cannot be reloaded.
2011-06-05 07:55:51 +00:00
hrs
6bc38bb776 Fix various inconsistencies in symbol naming and data handling which
made the logic behind them unnecessarily complicated.  This change is
a preparation to add support of dynamically-added/removed interfaces and the
link status changes in a more reliable way.  Changes include:

- Use queue(3) for linked-list manipulation.
- Use consistent variable names.
- Use (AF_INET6, s, d, sizeof(d)) instead of (AF_INET6, s, a, INET6_ADDRSTRLEN)
  for inet_ntop().
- style(9) fixes.

No functional change in this commit.
2011-06-04 16:42:51 +00:00
hrs
00e43e0cd5 - Fixes for WARNS=6.
- Use IFNAMSIZ for an interface name.
2011-06-04 02:51:12 +00:00
hrs
bf953fdd57 - Remove #ifdef RDNSS.
- Style(9).
- Define sin6_{linklocal,sitelocal}_all{nodes,routers} vars consistently.
2011-05-31 12:54:32 +00:00
hrs
fd7e38fffc Implemnt RDNSS and DNSSL options (RFC 6106, IPv6 Router Advertisement
Options for DNS Configuration) into rtadvd(8) and rtsold(8).  DNS
information received by rtsold(8) will go to resolv.conf(5) by
resolvconf(8) script.  Lifetime handling is not supported at this
moment.

Note: when receiving a link-local scope address rtsold(8) adds a scope
id into addresses in the script arguments based on the received
interface in a representation defined in RFC 4007 (e.g. fe80::1%bge0).
However, there are some shell scripts using printf(1) (including
resolvconf(8)) cannot process it properly because printf(1) can
recognize the character % as special.

Based on work by:	J.R. Oldroyd
PR:			kern/156259
2011-05-29 05:24:58 +00:00
kevlo
fa3791e1a7 Cleanup of userland __P use 2007-11-07 10:53:41 +00:00
suz
6e6824e4bc fixed memory leak.
Obtained From: KAME
2003-09-20 09:41:13 +00:00
ume
a3738aa5cf reduce #ifdef.
MFC after:	1 week
2003-08-11 15:51:54 +00:00
ume
958362f6a8 KNF, correct typos and cleanup spaces.
Obtained from:	KAME
MFC after:	1 week
2003-08-08 16:56:01 +00:00
ume
52b4a696e0 __FUNCTION__ --> __func__
Obtained from:	KAME
MFC after:	1 week
2003-08-08 16:38:23 +00:00
ume
832f8d2249 Sync with recent KAME.
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
2001-06-11 12:39:29 +00:00
itojun
a458f7bcea make it easier to handle $FreeBSD$ tags (amount of diff matters). 2001-01-21 15:25:46 +00:00
ume
6a944e364b some clarification on if_getmtu()
- avoid to use freed (by freeifaddrs) data
  - 1st try getifaddrs, then try SIOCGIFMTU as the last resort

Submitted by:	JINMEI Tatuya <jinmei@isl.rdc.toshiba.co.jp>
Obtained from:	KAME Project
2000-10-28 17:57:38 +00:00
kris
be25e6d5a3 Sync with latest KAME
Obtained from:	KAME
2000-07-05 22:09:50 +00:00
shin
48f6832d33 Added several socket close() which were mistakenly forgotten.
Reported by: Hidetoshi Shimokawa <simokawa@sat.t.u-tokyo.ac.jp>
2000-03-09 14:51:05 +00:00
shin
9b5932fc47 libipsec and IPsec related apps. (and some KAME related man pages)
Reviewed by: freebsd-arch, cvs-committers
Obtained from: KAME project
2000-01-06 12:40:54 +00:00