Commit Graph

54 Commits

Author SHA1 Message Date
hrs
13f5cb2be8 Disable IPv6 configuration for interfaces in pccard_ether_start().
After a change of devd.conf, devd(8) handles NIC attach/detach event
by using /etc/pccard_ether with the interface name as the argument.
This model does not work properly with IPv6 configuration because the
implementation of IPv6 stateless auto-configuration in the FreeBSD
rc.d scripts depends on whether there are any explicit configurations
for interfaces or not.  It works this way: if no manual configuration,
it will perform auto-configuration, but otherwise no
auto-configuration will be performed.  So, this behavior can only be
determined by all of the interfaces on a system, not a single one.
For this reason, the network6_interface_setup() function called from
the pccard_ether_start() does not work with a single interface name.
And what is worse, this combination of devd.conf and
pccard_ether_start() caused a bad side-effect that when
ipv6_enable=YES, all of interfaces marked as DOWN would be UP
unconditionally (and router solicitation was sent) just after devd(8)
was invoked.  This should be fixed in a more sophisticated way.
2006-12-08 15:48:42 +00:00
brooks
aa92e52181 Introduce a new method ipv6if which attemptes to figure out if an
interface is an IPv6 interface.

Use this method to decide if we should attempt to configure an interface
with an IPv6 address in pccard_ether.  The mechanism pccard_ether uses
to do this is unsuited to the task because it assumes the list of
interfaces it is passed is the full list of IPv6 interfaces and makes
decissions based on that.  This is at least a step in the right
direction and is probably about as much as we can MFC safely.

PR:		conf/103428
MFC after:	3 days
2006-09-21 01:44:52 +00:00
brooks
68deeefe49 Flushing all IPv4 routes when an interface is removed or unconfigured
makes no sense.  Remove the undocumented removable_route_flush feature
from pccard_ether.

X-MFC after:	never
2006-09-20 19:48:31 +00:00
brooks
6e1b63c897 Search the list of up interfaces provided by "ifconfig -ul" instead of
greping for UP in "ifconfig $ifn".  This eliminates a dependancy on
/usr.
2006-09-20 19:45:30 +00:00
brooks
91d01c20f9 Don't try to start interfaces that don't exist.
Reported by:    Dominique Goncalves <dominique.goncalves at gmail.com>
2006-08-18 13:19:45 +00:00
brooks
753b3bce68 Introduce a new function, ifexists and use it to avoid attempting to
touch interfaces that don't actually exist in the stop case.  In the
process move some IPv4 specific code from ifconfig_down to ipv4_down.

This should solve problems with ifconfig: error messages on boot when
interfaces are renamed.
2006-08-17 03:03:38 +00:00
brooks
591862f3fe Use more rc.subr bits to clean up pccard_ether and implement new
features.  Both the presence of a NOAUTO keyword and an interface being
up can be ignored is the forcestart option is used.  Additionally, a
restart option has been added.

Reviewed by:	ume
2005-10-03 18:20:44 +00:00
brooks
3f995d4eb8 Be less IPv4 centric. When checking if the interface is already
configured, check if the UP flag is set instead of checking for the
netmask keyword.
2005-09-28 19:59:18 +00:00
brooks
ec73ff7b51 - Remove the removable_interfaces variable. /etc/pccard_ether will
now run on any interface.
- Add a new ifconfig_<ifn> keyword, NOAUTO which prevents configuration
  of an interface at boot or via /etc/pccard_ether.  This allows
  /etc/rc.d/netif to be used to start and stop an interface on a purely
  manual basis.  The decision to affect pccard_ether may be revisited at
  a later date.

Requested by:	imp, gallatin (removable_interfaces)
Discussed with:	sam, Randy Bush (NOAUTO)
2005-08-24 01:23:49 +00:00
brooks
b4f8c168e5 Make sure we actually read the config files before testing values from
them.

Reported by:	Darren Pilgrim <dmp at bitfreak dot org>
PR:		conf/82313
Approved by:	re (network interface startup blanket)
2005-06-16 18:08:04 +00:00
brooks
5a3d620fb1 Support code for the OpenBSD dhclient. This significantly changes the
way interfaces are configured.  Some key points:

  - At startup, all interfaces are configured through /etc/rc.d/netif.
  - ifconfig_<if> variables my now mix real ifconfig commands the with
    DHCP and WPA directives.  For example, this allows media
    configuration prior to running dhclient.
  - /etc/rc.d/dhclient is not run at startup except by netif to start
    dhclient on specific interfaces.
  - /etc/pccard_ether calls "/etc/rc.d/netif start <if>" to do most of
    it's work.
  - /etc/pccard_ether no longer takes additional arguments to pass to
    ifconfig.  Instead, ifconfig_<if> variables are now honored in favor
    of pccard_ifconfig when available.
  - /etc/pccard_ether will only run on interfaces specified in
    removable_interfaces, even if pccard_ifconfig is set.
2005-06-07 04:49:12 +00:00
ceri
75b1493523 The submitter of bin/75786 turned out to not have removable interfaces,
and so the fix committed in r1.42 was not quite correct for the case
where there are two or more DHCP consuming removable interfaces - dhclient
must be restarted so that the other interfaces continue to function
correctly.

Approved by:	murray
MFC After:	7 days
2005-01-17 11:44:30 +00:00
ceri
ace3a11916 Correct syntactical weirdness in a call to /etc/rc.d/dhclient. Fixes:
PR:		bin/75786
Reported by:	Radko Keves <rado at daemon dot sk>
Approved by:	murray
MFC After:	5 days	( to RELENG_5 )
2005-01-04 16:52:15 +00:00
schweikh
91f34482ca Removed whitespace at BOF, EOL & EOF. 2004-06-06 11:46:29 +00:00
rse
9229a66472 remove superfluous space before end of backtick expression 2004-03-05 08:49:59 +00:00
ambrisko
fe992d62db - Existing code would ignore pccard_ether_delay when more then 9 seconds
- If there was an exiting dhclient running on the same interface as the
  new iface that left and returned then dhclient would be told to use the
  same interface twice.  Dhclient would fail and exit after getting
  confused.  Use "sort -u" on them to ensure no duplicates.
  This is a mostly a race condition on suspend and resume and how things
  happen to occur.
- Check for netmask being set on an interface rather then up.  An interface
  can be up but not configured.

Reviewed by:	mbr
2004-01-25 19:52:16 +00:00
mbr
958e5bbfa2 Release a previous lease if there is any, instead of
just killing dhclient. Needed my some broken dhcpd
implementations to be able to get a lease again.
2003-09-15 18:27:38 +00:00
mbr
79a88102f9 Move the stop_dhcp in start_dhcp again before the
delay. It seems that dhclient really needs the time
to get killed.
2003-08-12 22:44:48 +00:00
mbr
ad65249832 Remove the dhclient.${interface}.pid defines. They are now
obsolete. A working dhclient with OMAPI will also not need
this.
2003-08-12 22:27:08 +00:00
mbr
deec84d94a Make this working with two or more pccards and with more than
one internal device. Don't call the startup procedure again if
we already use start.

Support a manually started dhclient and keep its configured
interfaces after pccard removal.

Make pccard_ether working in single-user mode without /usr mounted.
2003-08-12 20:22:44 +00:00
mbr
87cf25dd90 Fix typo 2003-08-12 15:15:34 +00:00
mbr
58ef380ec1 Improve the handling dhcp handling of pccard_ether.
There are now many configurations which have a NIC on board, and
pccard slots. If a dhclient is running on the internal nic, the
Improve the handling dhcp handling of pccard_ether.

Improve the dhcp handling of pccard_ether.

There are now many configurations which have a NIC on board and
Improve the dhcp handling of pccard_ether.

There are now many configurations which have a NIC on board and
cardbus slots too. If a dhclient was already running on the internal
NIC, the user was forced to kill a running dhclient manually.

If now a pccard is included at startup time, /etc/rc.d/dhclient
start does include it into the startup list for dhcp devices.
That means you can now do dhcp on the internal and the pccard devices
at the same time. If the card is plugged in later, a running dhclient
(working for the internal interface only) is killed, and restarted,
but the interface name of the new pccard is added to the internal
name. After removal, /etc/rc.d/dhclient is started again. This
script does nothing if there are no devices in /etc/rc.conf

This is only a workaround for a well known problem. After we have
a dhcp client which handles device adding and removal, it will go
away.
2003-08-11 20:32:00 +00:00
maxim
884d86069c o Correct usage example: ep(4) does not have 'link0' option.
o Fix a typo.

PR:		misc/51955
Submitted by:	Xander <x+freebsd-gnats@surfnet.nl>
MFC after:	1 week
2003-06-16 09:11:29 +00:00
ume
e9db84519c follow dhcp_* changes. 2003-06-07 19:40:54 +00:00
ume
e78b0e7b11 pccard_ether didn't setup IPv6 after rcTOS sweep.
Reviewed by:	mtm and dougb
Approved by:	re (scott)
2003-05-12 11:36:50 +00:00
ume
1b0d502d79 use /etc/rc.d/network_ipv6 instead of obsoleted /etc/rc.network6. 2003-05-05 19:06:46 +00:00
imp
bcca72ef4d o redirect the grep to /dev/null
o use ifn rather than interface in rc.network
o merge into rc.d/network1

Approved by: (re blanket)
2002-12-12 09:31:10 +00:00
imp
1faabd6cbc o Don't do anything if the interface is already up.
o Only delay in pccard_ether when we're doing dhcp and starting the interface.

Approved: (re blanket for devd)
2002-12-11 23:30:34 +00:00
imp
d3c770d2d4 Due to a bug in the ed driver, which leads to hangs when using it with
dhclient and pccard_ether, introduce the concept of a "settle time" to
pccard_ether with the new pccard_ether_delay variable.  Defaults to 5
seconds, which is enough time for the ed driver to finish its
autoconfiguration for newer Linksys based cards.  This also can
eliminate the ed0: timeout messages that happen at startup as well.

MFC: after RE says OK.
2001-09-13 06:18:07 +00:00
ume
4919ec57f9 Avoid flushing IPv6 routes. `route flush' removes necessary
routes for IPv6 as well as IPv4 routes.
2001-05-09 20:30:55 +00:00
ume
e76cced2fd Enable static IPv6 address assignment on PCMCIA NIC.
PR:		conf/26633
2001-04-26 17:33:37 +00:00
toshi
7da3a08277 Add support for PC-card router configuration. (MFPAO)
o Add the removable_interfaces variable for list of removable network
  interfaces (PC-card ethernet, wireless network and USB ethernet etc).
o ifconfig_<ifn>_alias0, static_routes_<ifn>, removable_route_flush,
  /etc/start_if.<ifn> and /etc/stop_if.<ifn> are support.
o removable_route_flush variable is set to "NO" if you want to use the
  machine as gateway using two or more removable network cards. If
  static routing is needed use static_routes_<ifn> instead of
  static_routes or defaultrouter.
o The optional static_routes_<ifn> variable is likely static_routes.
o /etc/start_if.<ifn> and /etc/stop_if.<ifn> are shell script to be
  specified that are called when a card is inserted or removed.
2000-12-25 09:21:18 +00:00
dougb
1e8ecc617b Apply a more consistent style to the echo statements in /etc/ scripts.
* Put quotes around each line
* Single quotes for lines with no variable interpolation
* Double quotes if there is
* Capitalize each word that begins a line
* Make echo -n 'Doing foo:' ... echo '.' more of a standard

No functionality changes
2000-12-17 08:16:06 +00:00
joe
3d348198c8 Fix a blatant bug when running '/etc/pccard_ether device stop'.
I wasn't dropping the interface correctly, but not noticing because
the interface was going away when the card was ejected.

Submitted by:	Motomichi Matsuzaki <mzaki@e-mail.ne.jp>
2000-10-28 14:31:40 +00:00
joe
c96e987bcd Add an optional start/stop argument to pccard_ether, and migrate
the 'ifconfig ifN delete' into pccard_ether under the 'stop'
function.

In addition start dhclient with a pid file based on the interface
name, e.g. /var/run/dhclient.ep0.pid, and kill the correct dhclient
(or dhcpc) process when the card is removed.
2000-10-16 19:11:11 +00:00
joe
fe13d4e327 Avoid passing the optional ifconfig arguments to dhcpc as well as ifconfig.
This bug has been here since revision 1.8.
2000-10-16 19:03:48 +00:00
ume
0da497a9ff Make sure to accept RA. Some laptops run /etc/pccard_ether before
/etc/rc.network6.

PR:		bin/21062
2000-09-07 03:06:06 +00:00
ume
c633746aa6 If ipv6_enable is set to yes, do IPv6 setup for PCCARD ethernet
card.  This is still at staring point and end node case only.
2000-07-17 12:33:57 +00:00
sheldonh
e9b1278038 Add to defaults/rc.conf a new function source_rc_confs which rc
scripts may use to source safely overrides in ${rc_conf_files}
files.

This protects users who insist on the bad practice of copying
/etc/defaults/rc.conf to /etc/rc.conf from a recursive loop
that exhausts available file descriptors.

Several people have expressed interest in breaking this function
out into its own shell script.  Anyone who wants to embark on
such an undertaking would do well to study the attributed PR.

PR:		17595
Reported by:	adrian
Submitted by:	Doug Barton <Doug@gorean.org>
2000-04-27 08:43:49 +00:00
nsayer
320ecd9d1a When running dhclient on a PC-Card insertion, specify the inserted
interface on the dhclient command line. Not doing so screws up vmware's
network interface by attempting to configure it for DHCP (which will
never work, of course). It also would impact any other interface that
may be present that, again, would likely be manually configured for
some other purpose.

Approved by: jkh
2000-02-11 14:49:42 +00:00
sheldonh
d8a93d30ec Apply a consistent style to most of the etc scripts. Particularly, use
case instead of test where appropriate, since case allows case is a sh
builtin and (as a side-effect) allows case-insensitivity.

Changes discussed on freebsd-hackers.

Submitted by:	Doug Barton <Doug@gorean.org>
1999-09-13 15:44:20 +00:00
peter
289c0d262f $Id$ -> $FreeBSD$ 1999-08-27 23:37:10 +00:00
sheldonh
8cec588c44 Style clean-up:
* All variables are now embraced: ${foo}

	* All comparisons against some value now take the form:
	  [ "${foo}" ? "value" ]
	  where ? is a comparison operator

	* All empty string tests now take the form:
	  [ -z "${foo}" ]

	* All non-empty string tests now take the form:
	  [ -n "${foo}" ]

Submitted by:	jkh
1999-08-25 16:01:45 +00:00
steve
be84afbece dhclient is now in /sbin. 1999-02-22 02:55:18 +00:00
jkh
e57466a1c3 Use /etc/defaults/rc.conf everywhere, falling back to /etc/rc.conf
as necessary (for half-assed upgrades).
1999-02-10 18:08:16 +00:00
brian
387abc60ff Add Id keywords 1998-09-02 01:34:57 +00:00
phk
a2ddc2937c Wrapper script for PC Card Ethernet Adapters only supports ISC DHCP;
I prefer wide-dhcp, and since both are packages, it should get
equal billing.

PR:		7568
Reviewed by:	phk
Submitted by:	Drew Derbyshire <software@kew.com>
1998-08-14 06:31:58 +00:00
pst
5d80b78f9c Warn if ISC-DHCP not available. 1997-12-17 01:57:18 +00:00
pst
f17b8b0cc6 Support ISC-DHCP if the package is available. 1997-12-16 02:25:36 +00:00
nate
d3bfedd38f - In addtition to flushing the routes, also flush the arp cache when bringing
up the new network link.

Submitted by:	Guido van Rooij <guido@gvr.org>
1997-11-20 22:31:11 +00:00