Commit Graph

58 Commits

Author SHA1 Message Date
Andriy Voskoboinyk
7d3a36a88e Do not try to recreate wlan(4) interface if it already exists.
This should fix error messages caused by devd(8) during startup:

Starting Network: lo0 wlan0.
...
Starting devd.
ifconfig: SIOCS80211: Device busy
wpa_supplicant already running?  (pid=323).

MFC after:	2 weeks
2016-12-04 15:58:34 +00:00
Gleb Smirnoff
e560791028 Fix dynamic attach/detach of 802.11 devices after r287197:
o In pccard_ether add code to start children of a 802.11
  device, that are configured in rc.conf.
o In devd.conf provide a regex matching all 802.11 devices,
  and on match run pccard_ether to spawn children.

PR:		202784
Submitted by:	<vidwer gmail.com>
In collaboration with:	"Oleg V. Nauman" <oleg opentransfer.com>
2015-09-02 12:46:42 +00:00
Nick Hibma
fa020d40d1 Not only load pccard_ether settings, also load network settings. This
is only a problem when a /etc/rc.conf.d/network file is being used.

PR:		conf/160373
Submitted by:	n_hibma
MFC after:	1 week
2012-11-08 20:34:12 +00:00
Mike Makonnen
b064049801 Implement a "quiet" mode for rc.d/netif, which only outputs
the interface name of interfaces that were configured.

This change has the added benefit that ifn_start() and
ifn_stop() in network.subr no longer write to standard output.
Whether to output and what to output is now handled entirely
in rc.d/netif.
2008-06-23 20:50:11 +00:00
Hiroki Sato
2c615e1a64 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 Davis
6da9aa1452 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 Davis
cea6851cd0 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 Davis
0e409e4b42 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 Davis
fed4d6b394 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 Davis
4e7ff69a4c 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 Davis
721d95b6b2 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 Davis
94d785c84c 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 Davis
41f7ee42ae - 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 Davis
d873676af6 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 Davis
8e9e71f817 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 Davies
f5c4146d5a 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 Davies
b7df823a59 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
Jens Schweikhardt
d8beb0fd3b Removed whitespace at BOF, EOL & EOF. 2004-06-06 11:46:29 +00:00
Ralf S. Engelschall
799969be75 remove superfluous space before end of backtick expression 2004-03-05 08:49:59 +00:00
Doug Ambrisko
0d6ff3866a - 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
Martin Blapp
516b220f3e 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
Martin Blapp
ebba2f158c 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
Martin Blapp
8b95f89e4a 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
Martin Blapp
d7c24a758f 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
Martin Blapp
5912967938 Fix typo 2003-08-12 15:15:34 +00:00
Martin Blapp
d10526a03b 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 Konovalov
33e268e7a8 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
Hajimu UMEMOTO
f9b96756eb follow dhcp_* changes. 2003-06-07 19:40:54 +00:00
Hajimu UMEMOTO
bcd1e80f87 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
Hajimu UMEMOTO
924aa27d79 use /etc/rc.d/network_ipv6 instead of obsoleted /etc/rc.network6. 2003-05-05 19:06:46 +00:00
Warner Losh
c9e1bbfb91 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
Warner Losh
39a61a1fda 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
Warner Losh
8dac8c268d 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
Hajimu UMEMOTO
882a13da9c Avoid flushing IPv6 routes. `route flush' removes necessary
routes for IPv6 as well as IPv4 routes.
2001-05-09 20:30:55 +00:00
Hajimu UMEMOTO
4f34d18339 Enable static IPv6 address assignment on PCMCIA NIC.
PR:		conf/26633
2001-04-26 17:33:37 +00:00
Toshihiko ARAI
6b91b72b72 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
Doug Barton
e14563a3f3 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
Josef Karthauser
78ba546662 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
Josef Karthauser
69d1f468bf 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
Josef Karthauser
3b7c548b4b 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
Hajimu UMEMOTO
025ada8856 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
Hajimu UMEMOTO
feeff03591 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
Sheldon Hearn
f66e7afa28 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
Nick Sayer
ad2a9d04d1 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
Sheldon Hearn
321704296f 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 Wemm
9b7a44a60e $Id$ -> $FreeBSD$ 1999-08-27 23:37:10 +00:00
Sheldon Hearn
b68adff6b7 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 Price
c6b0cb111f dhclient is now in /sbin. 1999-02-22 02:55:18 +00:00
Jordan K. Hubbard
9c63624e6f 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 Somers
a19eda1f28 Add Id keywords 1998-09-02 01:34:57 +00:00