summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMu Qiao <qiaomuf@gentoo.org>2010-11-28 19:57:41 +0800
committerMu Qiao <qiaomuf@gentoo.org>2010-11-28 19:57:41 +0800
commitedd95ef1649484c53670b87b07be29f5794b0d41 (patch)
tree02f9aadf51a1654b4b4c575d60f5a90ff10a8a71
parentadd sunpinyin, change dependency of fcitx-sunpinyin (diff)
downloadqiaomuf-edd95ef1649484c53670b87b07be29f5794b0d41.tar.gz
qiaomuf-edd95ef1649484c53670b87b07be29f5794b0d41.tar.bz2
qiaomuf-edd95ef1649484c53670b87b07be29f5794b0d41.zip
Add networkmanager-0.8.2-r100 for testing purpose
Signed-off-by: Mu Qiao <qiaomuf@gentoo.org>
-rw-r--r--net-misc/networkmanager/files/networkmanager-0.8.2-ifnet.patch2290
-rw-r--r--net-misc/networkmanager/networkmanager-0.8.2-r100.ebuild146
2 files changed, 2436 insertions, 0 deletions
diff --git a/net-misc/networkmanager/files/networkmanager-0.8.2-ifnet.patch b/net-misc/networkmanager/files/networkmanager-0.8.2-ifnet.patch
new file mode 100644
index 0000000..ee5162c
--- /dev/null
+++ b/net-misc/networkmanager/files/networkmanager-0.8.2-ifnet.patch
@@ -0,0 +1,2290 @@
+diff -urN NetworkManager-0.8.2/system-settings/plugins/ifnet/Makefile.am NetworkManager_patched/system-settings/plugins/ifnet/Makefile.am
+--- NetworkManager-0.8.2/system-settings/plugins/ifnet/Makefile.am 2010-11-03 21:04:06.000000000 +0800
++++ NetworkManager_patched/system-settings/plugins/ifnet/Makefile.am 2010-11-28 19:51:50.805000120 +0800
+@@ -21,11 +21,10 @@
+ $(DBUS_CFLAGS) \
+ $(GUDEV_CFLAGS) \
+ -DG_DISABLE_DEPRECATED \
+- -DSYSCONFDIR=\"$(sysconfdir)\"\
+- -g
+-
++ -DSYSCONFDIR=\"$(sysconfdir)\"
+
+ libnm_settings_plugin_ifnet_la_LDFLAGS = -module -avoid-version
++
+ libnm_settings_plugin_ifnet_la_LIBADD = \
+ $(top_builddir)/libnm-util/libnm-util.la \
+ $(top_builddir)/libnm-glib/libnm-glib.la \
+@@ -50,12 +49,9 @@
+ $(DBUS_CFLAGS) \
+ -DG_DISABLE_DEPRECATED \
+ -DSYSCONFDIR=\"$(sysconfdir)\" \
+- -DSBINDIR=\"$(sbindir)\"\
+- -g
++ -DSBINDIR=\"$(sbindir)\"
+
+ lib_ifnet_io_la_LIBADD = \
+ $(top_builddir)/libnm-util/libnm-util.la \
+ $(GLIB_LIBS)\
+ $(GIO_LIBS)
+-
+-
+diff -urN NetworkManager-0.8.2/system-settings/plugins/ifnet/net_utils.c NetworkManager_patched/system-settings/plugins/ifnet/net_utils.c
+--- NetworkManager-0.8.2/system-settings/plugins/ifnet/net_utils.c 2010-11-03 21:04:06.000000000 +0800
++++ NetworkManager_patched/system-settings/plugins/ifnet/net_utils.c 2010-11-28 19:51:50.805000120 +0800
+@@ -19,7 +19,6 @@
+ * Copyright (C) 1999-2010 Gentoo Foundation, Inc.
+ */
+
+-#include <config.h>
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <string.h>
+@@ -194,6 +193,32 @@
+ return error_quark;
+ }
+
++static char *
++find_default_gateway_str (char *str)
++{
++ char *tmp;
++
++ if ((tmp = strstr (str, "default via ")) != NULL) {
++ return tmp + strlen ("default via ");
++ } else if ((tmp = strstr (str, "default gw ")) != NULL) {
++ return tmp + strlen ("default gw ");
++ }
++ return NULL;
++}
++
++static char *
++find_gateway_str (char *str)
++{
++ char *tmp;
++
++ if ((tmp = strstr (str, "via ")) != NULL) {
++ return tmp + strlen ("via ");
++ } else if ((tmp = strstr (str, "gw ")) != NULL) {
++ return tmp + strlen ("gw ");
++ }
++ return NULL;
++}
++
+ gboolean
+ reload_parsers ()
+ {
+@@ -362,11 +387,10 @@
+ if (!tmp)
+ return FALSE;
+ routes = g_strdup (tmp);
+- tmp = strstr (routes, "default via ");
++ tmp = find_default_gateway_str (routes);
+ if (!tmp) {
+ goto error;
+ }
+- tmp += strlen ("default via ");
+ g_strstrip (tmp);
+ if ((end = strstr (tmp, "\"")) != NULL)
+ *end = '\0';
+@@ -483,8 +507,13 @@
+
+ if (!gateway)
+ return 0;
+- tmp = strstr (gateway, "via ");
+- tmp = g_strdup (tmp + strlen ("via "));
++ tmp = find_gateway_str (gateway);
++ if (!tmp) {
++ PLUGIN_WARN (IFNET_PLUGIN_NAME,
++ "Couldn't obtain gateway in \"%s\"", gateway);
++ return 0;
++ }
++ tmp = g_strdup (tmp);
+ strip_string (tmp, ' ');
+ strip_string (tmp, '"');
+ if ((split = strstr (tmp, "\"")) != NULL)
+@@ -509,8 +538,13 @@
+
+ if (!next_hop)
+ return 0;
+- tmp = strstr (next_hop, "via ");
+- tmp = g_strdup (tmp + strlen ("via "));
++ tmp = find_gateway_str (next_hop);
++ if (!tmp) {
++ PLUGIN_WARN (IFNET_PLUGIN_NAME,
++ "Couldn't obtain next_hop in \"%s\"", next_hop);
++ return 0;
++ }
++ tmp = g_strdup (tmp);
+ strip_string (tmp, ' ');
+ strip_string (tmp, '"');
+ g_strstrip (tmp);
+@@ -671,8 +705,8 @@
+ length = g_strv_length (ipset);
+ for (i = 0; i < length; i++) {
+ ip = ipset[i];
+- if (strstr (ip, "default via ") || strstr (ip, "::")
+- || !strstr (ip, "via"))
++ if (find_default_gateway_str (ip) || strstr (ip, "::")
++ || !find_gateway_str (ip))
+ continue;
+ ip = strip_string (ip, '"');
+ iblock = create_ip4_block (ip);
+@@ -712,9 +746,7 @@
+ ip = strip_string (ip, '"');
+ if (ip[0] == '\0')
+ continue;
+- printf ("ip:%s\n", ip);
+- if ((tmp_addr = strstr (ip, "default via ")) != NULL) {
+- tmp_addr += strlen ("default via ");
++ if ((tmp_addr = find_default_gateway_str (ip)) != NULL) {
+ if (!is_ip6_address (tmp_addr))
+ continue;
+ else {
+@@ -855,7 +887,7 @@
+ void
+ get_dhcp_hostname_and_client_id (char **hostname, char **client_id)
+ {
+- gchar *dhcp_client = ifnet_get_global_setting ("main", "dhcp");
++ gchar *dhcp_client = NULL;
+ const gchar *dhcpcd_conf = "/etc/dhcpcd.conf";
+ const gchar *dhclient_conf = "/etc/dhcp/dhclient.conf";
+ gchar *line = NULL, *tmp = NULL, *contents = NULL;
+@@ -864,6 +896,7 @@
+
+ *hostname = NULL;
+ *client_id = NULL;
++ dhcp_client = ifnet_get_global_setting ("main", "dhcp");
+ if (dhcp_client) {
+ if (!strcmp (dhcp_client, "dhclient"))
+ g_file_get_contents (dhclient_conf, &contents, NULL,
+@@ -871,6 +904,7 @@
+ else if (!strcmp (dhcp_client, "dhcpcd"))
+ g_file_get_contents (dhcpcd_conf, &contents, NULL,
+ NULL);
++ g_free (dhcp_client);
+ } else {
+ if (g_file_test (dhclient_conf, G_FILE_TEST_IS_REGULAR))
+ g_file_get_contents (dhclient_conf, &contents, NULL,
+diff -urN NetworkManager-0.8.2/system-settings/plugins/ifnet/tests/hostname NetworkManager_patched/system-settings/plugins/ifnet/tests/hostname
+--- NetworkManager-0.8.2/system-settings/plugins/ifnet/tests/hostname 1970-01-01 08:00:00.000000000 +0800
++++ NetworkManager_patched/system-settings/plugins/ifnet/tests/hostname 2010-11-28 19:51:50.805000120 +0800
+@@ -0,0 +1,2 @@
++#Generated by NetworkManager
++hostname="gentoo"
+diff -urN NetworkManager-0.8.2/system-settings/plugins/ifnet/tests/Makefile.am NetworkManager_patched/system-settings/plugins/ifnet/tests/Makefile.am
+--- NetworkManager-0.8.2/system-settings/plugins/ifnet/tests/Makefile.am 2010-11-03 21:04:06.000000000 +0800
++++ NetworkManager_patched/system-settings/plugins/ifnet/tests/Makefile.am 2010-11-28 19:51:50.805000120 +0800
+@@ -6,8 +6,7 @@
+ TESTS = check_ifnet
+ check_PROGRAMS = check_ifnet
+ check_ifnet_SOURCES = test_all.c
+-check_ifnet_LDFLAGS = -g
+-check_ifnet_CPPFLAGS = $(CHECK_CFLAGS) $(GLIB_CFLAGS) -g
++check_ifnet_CPPFLAGS = $(CHECK_CFLAGS) $(GLIB_CFLAGS)
+ check_ifnet_LDADD = $(top_srcdir)/libnm-util/libnm-util.la\
+ $(top_srcdir)/system-settings/plugins/ifnet/lib-ifnet-io.la\
+ $(CHECK_LIBS)\
+diff -urN NetworkManager-0.8.2/system-settings/plugins/ifnet/tests/net NetworkManager_patched/system-settings/plugins/ifnet/tests/net
+--- NetworkManager-0.8.2/system-settings/plugins/ifnet/tests/net 1970-01-01 08:00:00.000000000 +0800
++++ NetworkManager_patched/system-settings/plugins/ifnet/tests/net 2010-11-28 19:51:50.805000120 +0800
+@@ -0,0 +1,147 @@
++# This blank configuration will automatically use DHCP for any net.*
++# scripts in /etc/init.d. To create a more complete configuration,
++# please review /etc/conf.d/net.example and save your configuration
++# in /etc/conf.d/net (this file :]!).
++
++config_eth0=(
++"202.117.16.121 netmask 255.255.255.0 brd 202.117.16.255"
++"192.168.4.121/24"
++"dhcp6"
++)
++routes_eth0=( "default via 202.117.16.1"
++ "192.168.4.0/24 via 192.168.4.1")
++dns_servers_eth0="202.117.0.20 202.117.0.21"
++dns_search_eth0="p12.edu.cn p13.edu.cn"
++
++config_eth1=(
++ "dhcp"
++)
++enable_ipv6_eth1="true"
++routes_eth1=( "default via 202.117.16.1" )
++dns_servers_eth1="202.117.0.20 202.117.0.21"
++config_eth2=(
++"202.117.16.1211 netmask 255.255.255.0 brd 202.117.16.255"
++"192.168.4.121/24"
++"4321:0:1:2:3:4:567:89ab/64"
++)
++routes_eth2=("default via 4321:0:1:2:3:4:567:89ab")
++enable_ipv6_eth2="true"
++config_eth3=("nufjlsjlll")
++managed_eth4=("false")
++routes_eth4=("default via 4321:0:1:2:3:4:567:89ab")
++config_eth5=("dhcp")
++config_eth6=("192.168.4.{1..101}/24")
++
++config_eth7=( "dhcp" )
++auto_eth7="true"
++
++
++config_myxjtu2=("202.117.16.121/24 brd 202.117.16.255")
++routes_myxjtu2=("default via 202.117.16.1")
++dns_servers_myxjtu2="202.117.0.20 202.117.0.21"
++#key_myxjtu2="[1] s:xjtud key [1] enc restricted"
++#key_eth6="[1] aaaa-4444-3d [2] s:xjtudlc key [1] enc open"
++
++
++username_ppp0='user'
++password_ppp0='password'
++
++config_qiaomuf=("dhcp")
++
++config_1xtest=("dhcp")
++
++config_0xab3ace=("dhcp")
++
++modules=( "iproute2" )
++ config_kvm0=( "null" )
++ config_kvm1=( "null" )
++
++ tuntap_kvm0="tap"
++ tuntap_kvm1="tap"
++ tunctl_kvm0="-u user"
++ tunctl_kvm1="-u user"
++
++bridge_br0="eth0 kvm0 kvm1"
++config_br0=( "192.168.1.10/24" )
++ brctl_br0=( "setfd 0")
++ dhcp_eth1="nosendhost nontp -I"
++
++predown() {
++ # The default in the script is to test for NFS root and disallow
++ # downing interfaces in that case. Note that if you specify a
++ # predown() function you will override that logic. Here it is, in
++ # case you still want it...
++ if is_net_fs /; then
++ eerror "root filesystem is network mounted -- can't stop ${IFACE}"
++ return 1
++ fi
++
++ # Remember to return 0 on success
++ return 0
++}
++
++postup() {
++ # This function could be used, for example, to register with a
++ # dynamic DNS service. Another possibility would be to
++ # send/receive mail once the interface is brought up.
++
++ # Here is an example that allows the use of iproute rules
++ # which have been configured using the rules_eth0 variable.
++ #rules_eth0=" \
++ # 'from 24.80.102.112/32 to 192.168.1.0/24 table localnet priority 100' \
++ # 'from 216.113.223.51/32 to 192.168.1.0/24 table localnet priority 100' \
++ #"
++ eval set -- \$rules_${IFVAR}
++ if [ $# != 0 ]; then
++ einfo "Adding IP policy routing rules"
++ eindent
++ # Ensure that the kernel supports policy routing
++ if ! ip rule list | grep -q "^"; then
++ eerror "You need to enable IP Policy Routing (CONFIG_IP_MULTIPLE_TABLES)"
++ eerror "in your kernel to use ip rules"
++ else
++ for x; do
++ ebegin "${x}"
++ ip rule add ${x}
++ eend $?
++ done
++ fi
++ eoutdent
++ # Flush the cache
++ ip route flush cache dev "${IFACE}"
++ fi
++
++}
++
++postdown() {
++ # Enable Wake-On-LAN for every interface except for lo
++ # Probably a good idea to set ifdown="no" in /etc/conf.d/net
++ # as well ;)
++ [ "${IFACE}" != "lo" ] && ethtool -s "${IFACE}" wol g
++
++ Automatically erase any ip rules created in the example postup above
++ if interface_exists "${IFACE}"; then
++ # Remove any rules for this interface
++ local rule
++ ip rule list | grep " iif ${IFACE}[ ]*" | {
++ while read rule; do
++ rule="${rule#*:}"
++ ip rule del ${rule}
++ done
++ }
++ # Flush the route cache
++ ip route flush cache dev "${IFACE}"
++ fi
++
++ # Return 0 always
++ return 0
++}
++
++failup() {
++ # This function is mostly here for completeness... I haven't
++ # thought of anything nifty to do with it yet ;-)
++}
++
++faildown()
++{}
++
+diff -urN NetworkManager-0.8.2/system-settings/plugins/ifnet/tests/net.all NetworkManager_patched/system-settings/plugins/ifnet/tests/net.all
+--- NetworkManager-0.8.2/system-settings/plugins/ifnet/tests/net.all 1970-01-01 08:00:00.000000000 +0800
++++ NetworkManager_patched/system-settings/plugins/ifnet/tests/net.all 2010-11-28 19:51:50.805000120 +0800
+@@ -0,0 +1,864 @@
++##############################################################################
++# QUICK-START
++#
++# The quickest start is if you want to use DHCP.
++# In that case, everything should work out of the box, no configuration
++# necessary, though the startup script will warn you that you haven't
++# specified anything.
++
++# WARNING :- some examples have a mixture of IPv4 (ie 192.168.0.1) and IPv6
++# (ie 4321:0:1:2:3:4:567:89ab) internet addresses. They only work if you have
++# the relevant kernel option enabled. So if you don't have an IPv6 enabled
++# kernel then remove the IPv6 address from your config.
++
++# If you want to use a static address or use DHCP explicitly, jump
++# down to the section labelled INTERFACE HANDLERS.
++#
++# If you want to do anything more fancy, you should take the time to
++# read through the rest of this file.
++
++##############################################################################
++# MODULES
++#
++# We now support modular networking scripts which means we can easily
++# add support for new interface types and modules while keeping
++# compatability with existing ones.
++#
++# Modules load by default if the package they need is installed. If
++# you specify a module here that doesn't have it's package installed
++# then you get an error stating which package you need to install.
++# Ideally, you only use the modules setting when you have two or more
++# packages installed that supply the same service.
++#
++# In other words, you probably should DO NOTHING HERE...
++
++# Prefer ifconfig over iproute2
++modules=( "ifconfig" )
++
++# You can also specify other modules for an interface
++# In this case we prefer udhcpc over dhcpcd
++modules_eth0=( "udhcpc" )
++
++# You can also specify which modules not to use - for example you may be
++# using a supplicant or linux-wlan-ng to control wireless configuration but
++# you still want to configure network settings per ESSID associated with.
++modules=( "!iwconfig" "!wpa_supplicant" )
++# IMPORTANT: If you need the above, please disable modules in that order
++
++
++##############################################################################
++# INTERFACE HANDLERS
++#
++# We provide two interface handlers presently: ifconfig and iproute2.
++# You need one of these to do any kind of network configuration.
++# For ifconfig support, emerge sys-apps/net-tools
++# For iproute2 support, emerge sys-apps/iproute2
++
++# If you don't specify an interface then we prefer iproute2 if it's installed
++# To prefer ifconfig over iproute2
++modules=( "ifconfig" )
++
++# For a static configuration, use something like this
++# (They all do exactly the same thing btw)
++config_eth0=( "192.168.0.2/24" )
++config_eth0=( "192.168.0.2 netmask 255.255.255.0" )
++
++# We can also specify a broadcast
++config_eth0=( "192.168.0.2/24 brd 192.168.0.255" )
++config_eth0=( "192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255" )
++
++# If you need more than one address, you can use something like this
++# NOTE: ifconfig creates an aliased device for each extra IPv4 address
++# (eth0:1, eth0:2, etc)
++# iproute2 does not do this as there is no need to
++config_eth0=(
++ "192.168.0.2/24"
++ "192.168.0.3/24"
++ "192.168.0.4/24"
++)
++# Or you can use sequence expressions
++config_eth0=( "192.168.0.{2..4}/24" )
++# which does the same as above. Be careful though as if you use this and
++# fallbacks, you have to ensure that both end up with the same number of
++# values otherwise your fallback won't work correctly.
++
++# You can also use IPv6 addresses
++# (you should always specify a prefix length with IPv6 here)
++config_eth0=(
++ "192.168.0.2/24"
++ "4321:0:1:2:3:4:567:89ab/64"
++ "4321:0:1:2:3:4:567:89ac/64"
++)
++
++# If you wish to keep existing addresses + routing and the interface is up,
++# you can specify a noop (no operation). If the interface is down or there
++# are no addresses assigned, then we move onto the next step (default dhcp)
++# This is useful when configuring your interface with a kernel command line
++# or similar
++config_eth0=( "noop" "192.168.0.2/24" )
++
++# If you don't want ANY address (only useful when calling for advanced stuff)
++config_eth0=( "null" )
++
++# Here's how to do routing if you need it
++routes_eth0=(
++ "default via 192.168.0.1" # IPv4 default route
++ "10.0.0.0/8 via 192.168.0.1" # IPv4 subnet route
++ "::/0" # IPv6 unicast
++)
++
++# If a specified module fails (like dhcp - see below), you can specify a
++# fallback like so
++fallback_eth0=( "192.168.0.2 netmask 255.255.255.0" )
++fallback_route_eth0=( "default via 192.168.0.1" )
++
++# NOTE: fallback entry must match the entry location in config_eth0
++# As such you can only have one fallback route.
++
++# Some users may need to alter the MTU - here's how
++mtu_eth0="1500"
++
++# Each module described below can set a default base metric, lower is
++# preferred over higher. This is so we can prefer a wired route over a
++# wireless route automaticaly. You can override this by setting
++metric_eth0="100"
++# or on a global basis
++metric="100"
++# The only downside of the global setting is that you have to ensure that
++# there are no conflicting routes yourself. For users with large routing
++# tables you may have to set a global metric as the due to a simple read of
++# the routing table taking over a minute at a time.
++
++##############################################################################
++# OPTIONAL MODULES
++
++# INTERFACE RENAMING
++# There is no consistent device renaming scheme for Linux.
++# The preferred way of naming devices is via the kernel module directly or
++# by using udev (http://www.reactivated.net/udevrules.php)
++
++# If you are unable to write udev rules, then we do provide a way of renaming
++# the interface based on it's MAC address, but it is not optimal.
++# Here is how to rename an interface whose MAC address is 00:11:22:33:44:55
++# to foo1
++rename_001122334455="foo1"
++
++# You can also do this based on current device name - although this is not
++# recommended. Here we rename eth1 to foo2.
++rename_eth1="foo2"
++
++#-----------------------------------------------------------------------------
++# WIRELESS (802.11 support)
++# Wireless can be provided by iwconfig or wpa_supplicant
++
++# iwconfig
++# emerge net-wireless/wireless-tools
++# Wireless options are held in /etc/conf.d/wireless - but could be here too
++# Consult the sample file /etc/conf.d/wireless.example for instructions
++# iwconfig is the default
++
++# wpa_supplicant
++# emerge net-wireless/wpa-supplicant
++# Wireless options are held in /etc/wpa_supplicant.conf
++# Consult the sample file /etc/wpa_supplicant.conf.example for instructions
++# To choose wpa_supplicant over iwconfig
++modules=( "wpa_supplicant" )
++# To configure wpa_supplicant
++wpa_supplicant_eth0="-Dwext" # For generic wireless
++wpa_supplicant_ath0="-Dmadwifi" # For Atheros based cards
++# Consult wpa_supplicant for more drivers
++# By default don't wait for wpa_suppliant to associate and authenticate.
++# If you would like to, so can specify how long in seconds
++associate_timeout_eth0=60
++# A value of 0 means wait forever.
++
++# GENERIC WIRELESS OPTIONS
++# PLEASE READ THE INSTRUCTIONS IN /etc/conf.d/wireless.example FOR
++# HOW TO USE THIS ESSID VARIABLE
++# You can also override any settings found here per ESSID - which is very
++# handy if you use different networks a lot
++config_ESSID=( "dhcp" )
++dhcpcd_ESSID="-t 5"
++
++# Setting name/domain server causes /etc/resolv.conf to be overwritten
++# Note that if DHCP is used, and you want this to take precedence then
++ set dhcp_ESSID="nodns"
++dns_servers_ESSID=( "192.168.0.1" "192.168.0.2" )
++dns_domain_ESSID="some.domain"
++dns_search_ESSID="search.this.domain search.that.domain"
++# Please check the man page for resolv.conf for more information
++# as domain and search are mutually exclusive.
++
++# You can also override any settings found here per MAC address of the AP
++# in case you use Access Points with the same ESSID but need different
++# networking configs. Below is an example - of course you use the same
++# method with other variables
++mac_config_001122334455=( "dhcp" )
++mac_dhcpcd_001122334455="-t 10"
++mac_dns_servers_001122334455=( "192.168.0.1" "192.168.0.2" )
++
++# When an interface has been associated with an Access Point, a global
++# variable called ESSID is set to the Access Point's ESSID for use in the
++# pre/post user functions below (although it's not available in preup as you
++# won't have associated then)
++
++# If you're using anything else to configure wireless on your interface AND
++# you have installed any of the above packages, you need to disable them
++modules=( "!iwconfig" "!wpa_supplicant" )
++
++#-----------------------------------------------------------------------------
++# DHCP
++# DHCP can be provided by dhclient, dhcpcd, pump or udhcpc.
++#
++# dhclient: emerge net-misc/dhcp
++# dhcpcd: emerge net-misc/dhcpcd
++# pump: emerge net-misc/pump
++# udhcpc: emerge net-misc/udhcp
++
++# If you have more than one DHCP client installed, you need to specify which
++# one to use - otherwise we default to dhcpcd if available.
++modules=( "dhclient" ) # to select dhclient over dhcpcd
++#
++# Notes:
++# - All clients send the current hostname to the DHCP server by default
++# - dhcpcd does not daemonize when the lease time is infinite
++# - udhcp-0.9.3-r3 and earlier do not support getting NTP servers
++# - pump does not support getting NIS servers
++# - DHCP tends to erase any existing device information - so add
++# static addresses after dhcp if you need them
++# - dhclient and udhcpc can set other resolv.conf options such as "option"
++# and "sortlist"- see the System module for more details
++
++# Regardless of which DHCP client you prefer, you configure them the
++# same way using one of following depending on which interface modules
++# you're using.
++config_eth0=( "dhcp" )
++
++# For passing custom options to dhcpcd use something like the following. This
++# example reduces the timeout for retrieving an address from 60 seconds (the
++# default) to 10 seconds.
++dhcpcd_eth0="-t 10"
++
++# dhclient, udhcpc and pump don't have many runtime options
++# You can pass options to them in a similar manner to dhcpcd though
++dhclient_eth0="..."
++udhcpc_eth0="..."
++pump_eth0="..."
++
++# GENERIC DHCP OPTIONS
++# Set generic DHCP options like so
++dhcp_eth0="release nodns nontp nonis nogateway nosendhost"
++
++# This tells the dhcp client to release it's lease when it stops, not to
++# overwrite dns, ntp and nis settings, not to set a default route and not to
++# send the current hostname to the dhcp server and when it starts.
++# You can use any combination of the above options - the default is not to
++# use any of them.
++
++#-----------------------------------------------------------------------------
++# For APIPA support, emerge net-misc/iputils or net-analyzer/arping
++
++# APIPA is a module that tries to find a free address in the range
++# 169.254.0.0-169.254.255.255 by arping a random address in that range on the
++# interface. If no reply is found then we assign that address to the interface
++
++# This is only useful for LANs where there is no DHCP server and you don't
++# connect directly to the internet.
++config_eth0=( "dhcp" )
++fallback_eth0=( "apipa" )
++
++#-----------------------------------------------------------------------------
++# ARPING Gateway configuration
++# and
++# Automatic Private IP Addressing (APIPA)
++# For arpingnet / apipa support, emerge net-misc/iputils or net-analyzer/arping
++#
++# This is a module that tries to find a gateway IP. If it exists then we use
++# that gateways configuration for our own. For the configuration variables
++# simply ensure that each octet is zero padded and the dots are removed.
++# Below is an example.
++#
++gateways_eth0="192.168.0.1 10.0.0.1"
++config_192168000001=( "192.168.0.2/24" )
++routes_192168000001=( "default via 192.168.0.1" )
++dns_servers_192168000001=( "192.168.0.1" )
++config_010000000001=( "10.0.0.254/8" )
++routes_010000000001=( "default via 10.0.0.1" )
++dns_servers_010000000001=( "10.0.0.1" )
++
++# We can also specify a specific MAC address for each gateway if different
++# networks have the same gateway.
++gateways_eth0="192.168.0.1,00:11:22:AA:BB:CC 10.0.0.1,33:44:55:DD:EE:FF"
++config_192168000001_001122AABBCC=( "192.168.0.2/24" )
++routes_192168000001_001122AABBCC=( "default via 192.168.0.1" )
++dns_servers_192168000001_001122AABBCC=( "192.168.0.1" )
++config_010000000001_334455DDEEFF=( "10.0.0.254/8" )
++routes_010000000001_334455DDEEFF=( "default via 10.0.0.1" )
++dns_servers_010000000001_334455DDEEFF=( "10.0.0.1" )
++
++# If we don't find any gateways (or there are none configured) then we try and
++# use APIPA to find a free address in the range 169.254.0.0-169.254.255.255
++# by arping a random address in that range on the interface. If no reply is
++# found then we assign that address to the interface.
++
++# This is only useful for LANs where there is no DHCP server.
++config_eth0=( "arping" )
++
++# or if no DHCP server can be found
++config_eth0=( "dhcp" )
++fallback_eth0=( "arping" )
++
++# NOTE: We default to sleeping for 1 second the first time we attempt an
++# arping to give the interface time to settle on the LAN. This appears to
++# be a good default for most instances, but if not you can alter it here.
++arping_sleep=5
++arping_sleep_lan=7
++
++# NOTE: We default to waiting 3 seconds to get an arping response. You can
++# change the default wait like so.
++arping_wait=3
++arping_wait_lan=2
++
++#-----------------------------------------------------------------------------
++# VLAN (802.1q support)
++# For VLAN support, emerge net-misc/vconfig
++
++# Specify the VLAN numbers for the interface like so
++# Please ensure your VLAN IDs are NOT zero-padded
++vlans_eth0="1 2"
++
++# You may not want to assign an IP the the physical interface, but we still
++# need it up.
++config_eth0=( "null" )
++
++# You can also configure the VLAN - see for vconfig man page for more details
++vconfig_eth0=( "set_name_type VLAN_PLUS_VID_NO_PAD" )
++vconfig_vlan1=( "set_flag 1" "set_egress_map 2 6" )
++config_vlan1=( "172.16.3.1 netmask 255.255.254.0" )
++config_vlan2=( "172.16.2.1 netmask 255.255.254.0" )
++
++# NOTE: Vlans can be configured with a . in their interface names
++# When configuring vlans with this name type, you need to replace . with a _
++config_eth0.1=( "dhcp" ) - does not work
++config_eth0_1=( "dhcp" ) - does work
++
++# NOTE: Vlans are controlled by their physical interface and not per vlan
++# This means you do not need to create init scripts in /etc/init.d for each
++# vlan, you must need to create one for the physical interface.
++# If you wish to control the configuration of each vlan through a separate
++# script, or wish to rename the vlan interface to something that vconfig
++# cannot then you need to do this.
++vlan_start_eth0="no"
++
++# If you do the above then you may want to depend on eth0 like so
++ RC_NEED_vlan1="net.eth0"
++# NOTE: depend functions only work in /etc/conf.d/net
++# and not in profile configs such as /etc/conf.d/net.foo
++
++#-----------------------------------------------------------------------------
++# Bonding
++# For link bonding/trunking emerge net-misc/ifenslave
++
++# To bond interfaces together
++slaves_bond0="eth0 eth1 eth2"
++config_bond0=( "null" ) # You may not want to assign an IP the the bond
++
++# If any of the slaves require extra configuration - for example wireless or
++# ppp devices - we need to depend function on the bonded interfaces
++RC_NEED_bond0="net.eth0 net.eth1"
++
++
++#-----------------------------------------------------------------------------
++# Classical IP over ATM
++# For CLIP support emerge net-dialup/linux-atm
++
++# Ensure that you have /etc/atmsigd.conf setup correctly
++# Now setup each clip interface like so
++clip_atm0=( "peer_ip [if.]vpi.vci [opts]" ... )
++# where "peer_ip" is the IP address of a PVC peer (in case of an ATM connection
++# with your ISP, your only peer is usually the ISP gateway closest to you),
++# "if" is the number of the ATM interface which will carry the PVC, "vpi.vci"
++# is the ATM VC address, and "opts" may optionally specify VC parameters like
++# qos, pcr, and the like (see "atmarp -s" for further reference). Please also
++# note quoting: it is meant to distinguish the VCs you want to create. You may,
++# in example, create an atm0 interface to more peers, like this:
++clip_atm0=( "1.1.1.254 0.8.35" "1.1.1.253 1.8.35" )
++
++# By default, the PVC will use the LLC/SNAP encapsulation. If you rather need a
++# null encapsulation (aka "VC mode"), please add the keyword "null" to opts.
++
++
++#-----------------------------------------------------------------------------
++# PPP
++# For PPP support, emerge net-dialup/ppp
++# PPP is used for most dialup connections, including ADSL.
++# The older ADSL module is documented below, but you are encouraged to try
++# this module first.
++#
++# You need to create the PPP net script yourself. Make it like so
++#ln -s net.lo /etc/init.d/net.ppp0
++#
++# We have to instruct ppp0 to actually use ppp
++config_ppp0=( "ppp" )
++#
++# Each PPP interface requires an interface to use as a "Link"
++link_ppp0="/dev/ttyS0" # Most PPP links will use a serial port
++link_ppp0="eth0" # PPPoE requires an ethernet interface
++link_ppp0="[itf.]vpi.vci" # PPPoA requires the ATM VC's address
++link_ppp0="/dev/null" # ISDN links should have this
++link_ppp0="pty 'your_link_command'" # PPP links over ssh, rsh, etc
++#
++# Here you should specify what pppd plugins you want to use
++# Available plugins are: pppoe, pppoa, capi, dhcpc, minconn, radius,
++# radattr, radrealms and winbind
++plugins_ppp0=(
++ "pppoe" # Required plugin for PPPoE
++ "pppoa vc-encaps" # Required plugin for PPPoA with an option
++ "capi" # Required plugin for ISDN
++)
++#
++# PPP requires at least a username. You can optionally set a password here too
++# If you don't, then it will use the password specified in /etc/ppp/*-secrets
++# against the specified username
++username_ppp0='user'
++password_ppp0='password'
++# NOTE: You can set a blank password like so
++password_ppp0=
++#
++# The PPP daemon has many options you can specify - although there are many
++# and may seem daunting, it is recommended that you read the pppd man page
++# before enabling any of them
++pppd_ppp0=(
++ "maxfail 0" # WARNING: It's not recommended you use this
++ # if you don't specify maxfail then we assume 0
++ "updetach" # If not set, "/etc/init.d/net.ppp0 start" will return
++ # immediately, without waiting the link to come up
++ # for the first time.
++ # Do not use it for dial-on-demand links!
++ "debug" # Enables syslog debugging
++ "noauth" # Do not require the peer to authenticate itself
++ "defaultroute" # Make this PPP interface the default route
++ "usepeerdns" # Use the DNS settings provided by PPP
++
++# On demand options
++ "demand" # Enable dial on demand
++ "idle 30" # Link goes down after 30 seconds of inactivity
++ "10.112.112.112:10.112.112.113" # Phony IP addresses
++ "ipcp-accept-remote" # Accept the peers idea of remote address
++ "ipcp-accept-local" # Accept the peers idea of local address
++ "holdoff 3" # Wait 3 seconds after link dies before re-starting
++
++# Dead peer detection
++ "lcp-echo-interval 15" # Send a LCP echo every 15 seconds
++ "lcp-echo-failure 3" # Make peer dead after 3 consective
++ # echo-requests
++
++# Compression options - use these to completely disable compression
++# noaccomp noccp nobsdcomp nodeflate nopcomp novj novjccomp
++
++# Dial-up settings
++ "lock" # Lock serial port
++ "115200" # Set the serial port baud rate
++ "modem crtscts" # Enable hardware flow control
++ "192.168.0.1:192.168.0.2" # Local and remote IP addresses
++)
++#
++# Dial-up PPP users need to specify at least one telephone number
++phone_number_ppp0=( "12345689" ) # Maximum 2 phone numbers are supported
++# They will also need a chat script - here's a good one
++chat_ppp0=(
++# 'ABORT' 'BUSY'
++# 'ABORT' 'ERROR'
++# 'ABORT' 'NO ANSWER'
++# 'ABORT' 'NO CARRIER'
++# 'ABORT' 'NO DIALTONE'
++# 'ABORT' 'Invalid Login'
++# 'ABORT' 'Login incorrect'
++# 'TIMEOUT' '5'
++# '' 'ATZ'
++# 'OK' 'AT' # Put your modem initialization string here
++# 'OK' 'ATDT\T'
++# 'TIMEOUT' '60'
++# 'CONNECT' ''
++# 'TIMEOUT' '5'
++# '~--' ''
++)
++
++# If the link require extra configuration - for example wireless or
++# RFC 268 bridge - we need to depend on the bridge so they get
++# configured correctly.
++RC_NEED_ppp0="net.nas0"
++
++#WARNING: if MTU of the PPP interface is less than 1500 and you use this
++#machine as a router, you should add the following rule to your firewall
++#
++#iptables -I FORWARD 1 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
++
++#-----------------------------------------------------------------------------
++# ADSL
++# For ADSL support, emerge net-dialup/rp-pppoe
++# WARNING: This ADSL module is being deprecated in favour of the PPP module
++# above.
++# You should make the following settings and also put your
++# username/password information in /etc/ppp/pap-secrets
++
++# Configure the interface to use ADSL
++config_eth0=( "adsl" )
++
++# You probably won't need to edit /etc/ppp/pppoe.conf if you set this
++adsl_user_eth0="my-adsl-username"
++
++#-----------------------------------------------------------------------------
++# ISDN
++# For ISDN support, emerge net-dialup/isdn4k-utils
++# You should make the following settings and also put your
++# username/password information in /etc/ppp/pap-secrets
++
++# Configure the interface to use ISDN
++config_ippp0=( "dhcp" )
++# It's important to specify dhcp if you need it!
++config_ippp0=( "192.168.0.1/24" )
++# Otherwise, you can use a static IP
++
++# NOTE: The interface name must be either ippp or isdn followed by a number
++
++# You may need this option to set the default route
++ipppd_eth0="defaultroute"
++
++#-----------------------------------------------------------------------------
++# MAC changer
++# To set a specific MAC address
++mac_eth0="00:11:22:33:44:55"
++
++# For changing MAC addresses using the below, emerge net-analyzer/macchanger
++# - to randomize the last 3 bytes only
++mac_eth0="random-ending"
++# - to randomize between the same physical type of connection (e.g. fibre,
++# copper, wireless) , all vendors
++mac_eth0="random-samekind"
++# - to randomize between any physical type of connection (e.g. fibre, copper,
++# wireless) , all vendors
++mac_eth0="random-anykind"
++# - full randomization - WARNING: some MAC addresses generated by this may NOT
++# act as expected
++mac_eth0="random-full"
++# custom - passes all parameters directly to net-analyzer/macchanger
++mac_eth0="some custom set of parameters"
++
++# You can also set other options based on the MAC address of your network card
++# Handy if you use different docking stations with laptops
++config_001122334455=( "dhcp" )
++
++#-----------------------------------------------------------------------------
++# TUN/TAP
++# For TUN/TAP support emerge net-misc/openvpn or sys-apps/usermode-utilities
++#
++# You must specify if we're a tun or tap device. Then you can give it any
++# name you like - such as vpn
++tuntap_vpn="tun"
++config_vpn=( "192.168.0.1/24")
++
++# Or stick wit the generic names - like tap0
++tuntap_tap0="tap"
++config_tap0=( "192.168.0.1/24")
++
++# For passing custom options to tunctl use something like the following. This
++# example sets the owner to adm
++tunctl_tun1="-u adm"
++# When using openvpn, there are no options
++
++#-----------------------------------------------------------------------------
++# Bridging (802.1d)
++# For bridging support emerge net-misc/bridge-utils
++
++# To add ports to bridge br0
++bridge_br0="eth0 eth1"
++# or dynamically add them when the interface comes up
++bridge_add_eth0="br0"
++bridge_add_eth1="br0"
++
++# You need to configure the ports to null values so dhcp does not get started
++config_eth0=( "null" )
++config_eth1=( "null" )
++
++# Finally give the bridge an address - dhcp or a static IP
++config_br0=( "dhcp" ) # may not work when adding ports dynamically
++config_br0=( "192.168.0.1/24" )
++
++# If any of the ports require extra configuration - for example wireless or
++# ppp devices - we need to depend on them like so.
++RC_NEED_br0="net.eth0 net.eth1"
++
++# Below is an example of configuring the bridge
++# Consult "man brctl" for more details
++brctl_br0=( "setfd 0" "sethello 0" "stp off" )
++
++#-----------------------------------------------------------------------------
++# RFC 2684 Bridge Support
++# For RFC 2684 bridge support emerge net-misc/br2684ctl
++
++# Interface names have to be of the form nas0, nas1, nas2, etc.
++# You have to specify a VPI and VCI for the interface like so
++br2684ctl_nas0="-a 0.38" # UK VPI and VCI
++
++# You may want to configure the encapsulation method as well by adding the -e
++# option to the command above (may need to be before the -a command)
++# -e 0 # LLC (default)
++# -e 1 # VC mux
++
++# Then you can configure the interface as normal
++config_nas0=( "192.168.0.1/24" )
++
++#-----------------------------------------------------------------------------
++# Tunnelling
++# WARNING: For tunnelling it is highly recommended that you
++# emerge sys-apps/iproute2
++#
++# For GRE tunnels
++iptunnel_vpn0="mode gre remote 207.170.82.1 key 0xffffffff ttl 255"
++
++# For IPIP tunnels
++iptunnel_vpn0="mode ipip remote 207.170.82.2 ttl 255"
++
++# To configure the interface
++config_vpn0=( "192.168.0.2 pointopoint 192.168.1.2" ) # ifconfig style
++config_vpn0=( "192.168.0.2 peer 192.168.1.1" ) # iproute2 style
++
++# 6to4 Tunnels allow IPv6 to work over IPv4 addresses, provided you
++# have a non-private address configured on an interface.
++ link_6to4="eth0" # Interface to base it's addresses on
++ config_6to4=( "ip6to4" )
++# You may want to depend on eth0 like so
++RC_NEED_6to4="net.eth0"
++# To ensure that eth0 is configured before 6to4. Of course, the tunnel could be
++# any name and this also works for any configured interface.
++# NOTE: If you're not using iproute2 then your 6to4 tunnel has to be called
++# sit0 - otherwise use a different name like 6to4 in the example above.
++
++
++#-----------------------------------------------------------------------------
++# System
++# For configuring system specifics such as domain, dns, ntp and nis servers
++# It's rare that you would need todo this, but you can anyway.
++# This is most benefit to wireless users who don't use DHCP so they can change
++# their configs based on ESSID. See wireless.example for more details
++
++# To use dns settings such as these, dns_servers_eth0 must be set!
++# If you omit the _eth0 suffix, then it applies to all interfaces unless
++# overridden by the interface suffix.
++dns_domain_eth0="your.domain"
++dns_servers_eth0="192.168.0.2 192.168.0.3"
++dns_search_eth0="this.domain that.domain"
++dns_options_eth0=( "timeout 1" "rotate" )
++dns_sortlist_eth0="130.155.160.0/255.255.240.0 130.155.0.0"
++# See the man page for resolv.conf for details about the options and sortlist
++# directives
++
++ntp_servers_eth0="192.168.0.2 192.168.0.3"
++
++nis_domain_eth0="domain"
++nis_servers_eth0="192.168.0.2 192.168.0.3"
++
++# NOTE: Setting any of these will stamp on the files in question. So if you
++# don't specify dns_servers but you do specify dns_domain then no nameservers
++# will be listed in /etc/resolv.conf even if there were any there to start
++# with.
++# If this is an issue for you then maybe you should look into a resolv.conf
++# manager like resolvconf-gentoo to manage this file for you. All packages
++# that baselayout supports use resolvconf-gentoo if installed.
++
++#-----------------------------------------------------------------------------
++# Cable in/out detection
++# Sometimes the cable is in, others it's out. Obviously you don't want to
++# restart net.eth0 every time when you plug it in either.
++#
++# netplug is a package that detects this and requires no extra configuration
++# on your part.
++# emerge sys-apps/netplug
++# or
++# emerge sys-apps/ifplugd
++# and you're done :)
++
++# By default we don't wait for netplug/ifplugd to configure the interface.
++# If you would like it to wait so that other services now that network is up
++# then you can specify a timeout here.
++plug_timeout="10"
++# A value of 0 means wait forever.
++
++# If you don't want to use netplug on a specific interface but you have it
++# installed, you can disable it for that interface via the modules statement
++modules_eth0=( "!netplug" )
++# You can do the same for ifplugd
++#
++# You can disable them both with the generic plug
++modules_eth0=( "!plug" )
++
++# To use specific ifplugd options, fex specifying wireless mode
++ifplugd_eth0="--api-mode=wlan"
++# man ifplugd for more options
++
++##############################################################################
++# ADVANCED CONFIGURATION
++#
++# Four functions can be defined which will be called surrounding the
++# start/stop operations. The functions are called with the interface
++# name first so that one function can control multiple adapters. An extra two
++# functions can be defined when an interface fails to start or stop.
++#
++# The return values for the preup and predown functions should be 0
++# (success) to indicate that configuration or deconfiguration of the
++# interface can continue. If preup returns a non-zero value, then
++# interface configuration will be aborted. If predown returns a
++# non-zero value, then the interface will not be allowed to continue
++# deconfiguration.
++#
++# The return values for the postup, postdown, failup and faildown functions are
++# ignored since there's nothing to do if they indicate failure.
++#
++# ${IFACE} is set to the interface being brought up/down
++# ${IFVAR} is ${IFACE} converted to variable name bash allows
++
++#preup() {
++# # Test for link on the interface prior to bringing it up. This
++# # only works on some network adapters and requires the mii-diag
++# # package to be installed.
++# if mii-tool "${IFACE}" 2> /dev/null | grep -q 'no link'; then
++# ewarn "No link on ${IFACE}, aborting configuration"
++# return 1
++# fi
++#
++# # Test for link on the interface prior to bringing it up. This
++# # only works on some network adapters and requires the ethtool
++# # package to be installed.
++# if ethtool "${IFACE}" | grep -q 'Link detected: no'; then
++# ewarn "No link on ${IFACE}, aborting configuration"
++# return 1
++# fi
++#
++#
++# # Remember to return 0 on success
++# return 0
++#}
++
++#predown() {
++# # The default in the script is to test for NFS root and disallow
++# # downing interfaces in that case. Note that if you specify a
++# # predown() function you will override that logic. Here it is, in
++# # case you still want it...
++# if is_net_fs /; then
++# eerror "root filesystem is network mounted -- can't stop ${IFACE}"
++# return 1
++# fi
++#
++# # Remember to return 0 on success
++# return 0
++#}
++
++#postup() {
++# # This function could be used, for example, to register with a
++# # dynamic DNS service. Another possibility would be to
++# # send/receive mail once the interface is brought up.
++
++# # Here is an example that allows the use of iproute rules
++# # which have been configured using the rules_eth0 variable.
++# #rules_eth0=(
++# # "from 24.80.102.112/32 to 192.168.1.0/24 table localnet priority 100"
++# # "from 216.113.223.51/32 to 192.168.1.0/24 table localnet priority 100"
++# #)
++# local x="rules_${IFVAR}[@]"
++# local -a rules=( "${!x}" )
++# if [[ -n ${rules} ]] ; then
++# einfo "Adding IP policy routing rules"
++# eindent
++# # Ensure that the kernel supports policy routing
++# if ! ip rule list | grep -q "^" ; then
++# eerror "You need to enable IP Policy Routing (CONFIG_IP_MULTIPLE_TABLES)"
++# eerror "in your kernel to use ip rules"
++# else
++# for x in "${rules[@]}" ; do
++# ebegin "${x}"
++# ip rule add ${x} dev "${IFACE}"
++# eend $?
++# done
++# fi
++# eoutdent
++# # Flush the cache
++# ip route flush cache dev "${IFACE}"
++# fi
++
++#}
++
++#postdown() {
++# # Enable Wake-On-LAN for every interface except for lo
++# # Probably a good idea to set RC_DOWN_INTERFACE="no" in /etc/conf.d/rc
++# # as well ;)
++# [[ ${IFACE} != "lo" ]] && ethtool -s "${IFACE}" wol g
++
++# Automatically erase any ip rules created in the example postup above
++# if interface_exists "${IFACE}" ; then
++# # Remove any rules for this interface
++# local rule
++# ip rule list | grep " iif ${IFACE}[ ]*" | {
++# while read rule ; do
++# rule="${rule#*:}"
++# ip rule del ${rule}
++# done
++# }
++# # Flush the route cache
++# ip route flush cache dev "${IFACE}"
++# fi
++
++# # Return 0 always
++# return 0
++#}
++
++#failup() {
++# # This function is mostly here for completeness... I haven't
++# # thought of anything nifty to do with it yet ;-)
++#}
++
++#faildown() {
++# # This function is mostly here for completeness... I haven't
++# # thought of anything nifty to do with it yet ;-)
++#}
++
++##############################################################################
++# FORCING MODULES
++# The Big Fat Warning :- If you use module forcing do not complain to us or
++# file bugs about it not working!
++#
++# Loading modules is a slow affair - we have to check each one for the following
++# 1) Code sanity
++# 2) Has the required package been emerged?
++# 3) Has it modified anything?
++# 4) Have all the dependant modules been loaded?
++
++# Then we have to strip out the conflicting modules based on user preference
++# and default configuration and sort them into the correct order.
++# Finally we check the end result for dependencies.
++
++# This, of course, takes valuable CPU time so we provide module forcing as a
++# means to speed things up. We still do *some* checking but not much.
++
++# It is essential that you force modules in the correct order and supply all
++# the modules you need. You must always supply an interface module - we
++# supply ifconfig or iproute2.
++
++# The Big Fat Warning :- If you use module forcing do not complain to us or
++# file bugs about it not working!
++
++# Now that we've warned you twice, here's how to do it
++modules_force=( "ifconfig" )
++modules_force=( "iproute2" "dhcpcd" )
++
++# We can also apply this to a specific interface
++modules_force_eth1=( "iproute2" )
++
++# The below will not work
++modules_force=( "dhcpcd" )
++# No interface (ifconfig/iproute2)
++modules_force=( "ifconfig" "essidnet" "iwconfig" )
++# Although it will not crash, essidnet will not work as it has to come after
++# iwconfig
++modules_force=( "iproute2" "ifconfig" )
++# The interface will be setup twice which will cause problems
+diff -urN NetworkManager-0.8.2/system-settings/plugins/ifnet/tests/nm-system-settings.conf NetworkManager_patched/system-settings/plugins/ifnet/tests/nm-system-settings.conf
+--- NetworkManager-0.8.2/system-settings/plugins/ifnet/tests/nm-system-settings.conf 1970-01-01 08:00:00.000000000 +0800
++++ NetworkManager_patched/system-settings/plugins/ifnet/tests/nm-system-settings.conf 2010-11-28 19:51:50.805000120 +0800
+@@ -0,0 +1,5 @@
++[main]
++plugins=ifnet,keyfile
++
++[ifnet]
++managed=false
+diff -urN NetworkManager-0.8.2/system-settings/plugins/ifnet/tests/test_all.c NetworkManager_patched/system-settings/plugins/ifnet/tests/test_all.c
+--- NetworkManager-0.8.2/system-settings/plugins/ifnet/tests/test_all.c 2010-11-03 21:04:06.000000000 +0800
++++ NetworkManager_patched/system-settings/plugins/ifnet/tests/test_all.c 2010-11-28 19:51:50.805000120 +0800
+@@ -58,17 +58,22 @@
+ "get hostname",
+ "hostname is not correctly read, read:%s, expected: gentoo",
+ hostname);
++ g_free (hostname);
+ }
+
+ static void
+ test_write_hostname ()
+ {
+ gchar *hostname = read_hostname ("hostname");
++ gchar *tmp;
+
+ write_hostname ("gentoo-nm", "hostname");
+- ASSERT (strcmp (read_hostname ("hostname"), "gentoo-nm") == 0,
++ tmp = read_hostname ("hostname");
++ ASSERT (strcmp (tmp, "gentoo-nm") == 0,
+ "write hostname", "write hostname error");
+ write_hostname (hostname, "hostname");
++ g_free (tmp);
++ g_free (hostname);
+ }
+
+ static void
+@@ -85,14 +90,13 @@
+ static void
+ test_has_default_route ()
+ {
+- ASSERT (has_default_ip4_route ("eth0"), "has default route",
+- "eth0 should have a default ipv4 route");
+- ASSERT (has_default_ip6_route ("eth4"), "has default route",
+- "eth4 should have a default ipv6 route");
+-
++ ASSERT (has_default_ip4_route ("eth0"),
++ "has default route", "eth0 should have a default ipv4 route");
++ ASSERT (has_default_ip6_route ("eth4"),
++ "has default route", "eth4 should have a default ipv6 route");
+ ASSERT (!has_default_ip4_route ("eth5")
+- && !has_default_ip6_route ("eth5"), "has default route",
+- "eth5 shouldn't have a default route");
++ && !has_default_ip6_route ("eth5"),
++ "has default route", "eth5 shouldn't have a default route");
+ }
+
+ static void
+@@ -138,8 +142,8 @@
+ str = malloc (INET_ADDRSTRLEN);
+ tmp_ip4_addr.s_addr = iblock->ip;
+ inet_ntop (AF_INET, &tmp_ip4_addr, str, INET_ADDRSTRLEN);
+- ASSERT (strcmp (ip, str) == 0, "check ip", "ip expected:%s, find:%s",
+- ip, str);
++ ASSERT (strcmp (ip, str) == 0, "check ip",
++ "ip expected:%s, find:%s", ip, str);
+ tmp_ip4_addr.s_addr = iblock->netmask;
+ inet_ntop (AF_INET, &tmp_ip4_addr, str, INET_ADDRSTRLEN);
+ ASSERT (strcmp (netmask, str) == 0, "check netmask",
+@@ -170,8 +174,8 @@
+ destroy_ip_block (iblock);
+ iblock = convert_ip4_config_block ("eth2");
+ ASSERT (iblock != NULL
+- && iblock->next == NULL, "convert error IPv4 address",
+- "should only get one address");
++ && iblock->next == NULL,
++ "convert error IPv4 address", "should only get one address");
+ check_ip_block (iblock, "192.168.4.121", "255.255.255.0", "0.0.0.0");
+ destroy_ip_block (iblock);
+ iblock = convert_ip4_config_block ("eth3");
+@@ -182,7 +186,6 @@
+ ASSERT (iblock != NULL, "convert config_block",
+ "convert error configuration");
+ destroy_ip_block (iblock);
+-
+ }
+
+ static void
+@@ -209,10 +212,13 @@
+ ASSERT (exist_ssid ("static-wep-test"), "exist_ssid",
+ "ssid static-wep-test is not found");
+ value = wpa_get_value ("static-wep-test", "key_mgmt");
+- ASSERT (value && strcmp (value, "NONE") == 0, "get wpa data",
++ ASSERT (value
++ && strcmp (value, "NONE") == 0, "get wpa data",
+ "key_mgmt of static-wep-test should be NONE, find %s", value);
+ value = wpa_get_value ("static-wep-test", "wep_key0");
+- ASSERT (value && strcmp (value, "\"abcde\"") == 0, "get wpa data",
++ ASSERT (value
++ && strcmp (value, "\"abcde\"") == 0,
++ "get wpa data",
+ "wep_key0 of static-wep-test should be abcde, find %s", value);
+ ASSERT (exist_ssid ("leap-example"), "get wsec",
+ "ssid leap-example is not found");
+@@ -228,8 +234,9 @@
+ result = strip_string (result, '(');
+ result = strip_string (result, ')');
+ result = strip_string (result, '"');
+- ASSERT (strcmp (result, "default via 202.117.16.1") == 0,
+- "strip_string", "string isn't stripped, result is: %s", result);
++ ASSERT (strcmp (result, "default via 202.117.16.1") ==
++ 0, "strip_string",
++ "string isn't stripped, result is: %s", result);
+ g_free (result_b);
+ }
+
+@@ -265,7 +272,6 @@
+ "new connection failed: %s", error
+ && (*error) ? (*error)->message : "NONE");
+ g_object_unref (connection);
+-
+ }
+
+ static void
+@@ -280,8 +286,9 @@
+ error == NULL ? "None" : (*error)->message);
+ ASSERT (ifnet_update_parsers_by_connection
+ (connection, "eth0", NULL, "net.generate",
+- "wpa_supplicant.conf.generate", error), "update connection",
+- "update connection failed %s", "eth0");
++ "wpa_supplicant.conf.generate", error),
++ "update connection", "update connection failed %s", "eth0");
++ g_object_unref (connection);
+ connection =
+ ifnet_update_connection_from_config_block ("0xab3ace", error);
+ ASSERT (connection != NULL, "get connection",
+@@ -289,8 +296,9 @@
+ error == NULL ? "None" : (*error)->message);
+ ASSERT (ifnet_update_parsers_by_connection
+ (connection, "0xab3ace", NULL, "net.generate",
+- "wpa_supplicant.conf.generate", error), "update connection",
+- "update connection failed %s", "0xab3ace");
++ "wpa_supplicant.conf.generate", error),
++ "update connection", "update connection failed %s", "0xab3ace");
++ g_object_unref (connection);
+ }
+
+ static void
+@@ -301,14 +309,17 @@
+
+ connection = ifnet_update_connection_from_config_block ("eth0", error);
+ ASSERT (ifnet_add_new_connection
+- (connection, "net.generate", "wpa_supplicant.conf.generate",
+- error), "add connection", "add connection failed: %s", "eth0");
++ (connection, "net.generate",
++ "wpa_supplicant.conf.generate", error),
++ "add connection", "add connection failed: %s", "eth0");
++ g_object_unref (connection);
+ connection =
+ ifnet_update_connection_from_config_block ("myxjtu2", error);
+ ASSERT (ifnet_add_new_connection
+- (connection, "net.generate", "wpa_supplicant.conf.generate",
+- error), "add connection", "add connection failed: %s",
+- "myxjtu2");
++ (connection, "net.generate",
++ "wpa_supplicant.conf.generate", error),
++ "add connection", "add connection failed: %s", "myxjtu2");
++ g_object_unref (connection);
+ }
+
+ static void
+@@ -322,16 +333,20 @@
+ "get connection failed: %s",
+ error == NULL ? "None" : (*error)->message);
+ ASSERT (ifnet_delete_connection_in_parsers
+- ("eth7", "net.generate", "wpa_supplicant.conf.generate"),
++ ("eth7", "net.generate",
++ "wpa_supplicant.conf.generate"),
+ "delete connection", "delete connection failed: %s", "eth7");
++ g_object_unref (connection);
+ connection =
+ ifnet_update_connection_from_config_block ("qiaomuf", error);
+ ASSERT (connection != NULL, "get connection",
+ "get connection failed: %s",
+ error == NULL ? "None" : (*error)->message);
+ ASSERT (ifnet_delete_connection_in_parsers
+- ("qiaomuf", "net.generate", "wpa_supplicant.conf.generate"),
++ ("qiaomuf", "net.generate",
++ "wpa_supplicant.conf.generate"),
+ "delete connection", "delete connection failed: %s", "qiaomuf");
++ g_object_unref (connection);
+ }
+
+ static void
+@@ -369,10 +384,8 @@
+ wpa_parser_destroy ();
+ ifnet_init ("net");
+ wpa_parser_init ("wpa_supplicant.conf");
+- printf("Initialization complete\n");
+-
++ printf ("Initialization complete\n");
+ run_all (TRUE);
+-
+ ifnet_destroy ();
+ wpa_parser_destroy ();
+ return 0;
+diff -urN NetworkManager-0.8.2/system-settings/plugins/ifnet/tests/wpa_supplicant.conf NetworkManager_patched/system-settings/plugins/ifnet/tests/wpa_supplicant.conf
+--- NetworkManager-0.8.2/system-settings/plugins/ifnet/tests/wpa_supplicant.conf 1970-01-01 08:00:00.000000000 +0800
++++ NetworkManager_patched/system-settings/plugins/ifnet/tests/wpa_supplicant.conf 2010-11-28 19:51:50.805000120 +0800
+@@ -0,0 +1,876 @@
++##### Example wpa_supplicant configuration file ###############################
++#
++# This file describes configuration file format and lists all available option.
++# Please also take a look at simpler configuration examples in 'examples'
++# subdirectory.
++#
++# Empty lines and lines starting with # are ignored
++
++# NOTE! This file may contain password information and should probably be made
++# readable only by root user on multiuser systems.
++
++# Note: All file paths in this configuration file should use full (absolute,
++# not relative to working directory) path in order to allow working directory
++# to be changed. This can happen if wpa_supplicant is run in the background.
++
++# Whether to allow wpa_supplicant to update (overwrite) configuration
++#
++# This option can be used to allow wpa_supplicant to overwrite configuration
++# file whenever configuration is changed (e.g., new network block is added with
++# wpa_cli or wpa_gui, or a password is changed). This is required for
++# wpa_cli/wpa_gui to be able to store the configuration changes permanently.
++# Please note that overwriting configuration file will remove the comments from
++# it.
++#update_config=1
++
++# global configuration (shared by all network blocks)
++#
++# Parameters for the control interface. If this is specified, wpa_supplicant
++# will open a control interface that is available for external programs to
++# manage wpa_supplicant. The meaning of this string depends on which control
++# interface mechanism is used. For all cases, the existance of this parameter
++# in configuration is used to determine whether the control interface is
++# enabled.
++#
++# For UNIX domain sockets (default on Linux and BSD): This is a directory that
++# will be created for UNIX domain sockets for listening to requests from
++# external programs (CLI/GUI, etc.) for status information and configuration.
++# The socket file will be named based on the interface name, so multiple
++# wpa_supplicant processes can be run at the same time if more than one
++# interface is used.
++# /var/run/wpa_supplicant is the recommended directory for sockets and by
++# default, wpa_cli will use it when trying to connect with wpa_supplicant.
++#
++# Access control for the control interface can be configured by setting the
++# directory to allow only members of a group to use sockets. This way, it is
++# possible to run wpa_supplicant as root (since it needs to change network
++# configuration and open raw sockets) and still allow GUI/CLI components to be
++# run as non-root users. However, since the control interface can be used to
++# change the network configuration, this access needs to be protected in many
++# cases. By default, wpa_supplicant is configured to use gid 0 (root). If you
++# want to allow non-root users to use the control interface, add a new group
++# and change this value to match with that group. Add users that should have
++# control interface access to this group. If this variable is commented out or
++# not included in the configuration file, group will not be changed from the
++# value it got by default when the directory or socket was created.
++#
++# When configuring both the directory and group, use following format:
++# DIR=/var/run/wpa_supplicant GROUP=wheel
++# DIR=/var/run/wpa_supplicant GROUP=0
++# (group can be either group name or gid)
++#
++# For UDP connections (default on Windows): The value will be ignored. This
++# variable is just used to select that the control interface is to be created.
++# The value can be set to, e.g., udp (ctrl_interface=udp)
++#
++# For Windows Named Pipe: This value can be used to set the security descriptor
++# for controlling access to the control interface. Security descriptor can be
++# set using Security Descriptor String Format (see http://msdn.microsoft.com/
++# library/default.asp?url=/library/en-us/secauthz/security/
++# security_descriptor_string_format.asp). The descriptor string needs to be
++# prefixed with SDDL=. For example, ctrl_interface=SDDL=D: would set an empty
++# DACL (which will reject all connections). See README-Windows.txt for more
++# information about SDDL string format.
++#
++ctrl_interface=/var/run/wpa_supplicant
++
++# IEEE 802.1X/EAPOL version
++# wpa_supplicant is implemented based on IEEE Std 802.1X-2004 which defines
++# EAPOL version 2. However, there are many APs that do not handle the new
++# version number correctly (they seem to drop the frames completely). In order
++# to make wpa_supplicant interoperate with these APs, the version number is set
++# to 1 by default. This configuration value can be used to set it to the new
++# version (2).
++eapol_version=1
++
++# AP scanning/selection
++# By default, wpa_supplicant requests driver to perform AP scanning and then
++# uses the scan results to select a suitable AP. Another alternative is to
++# allow the driver to take care of AP scanning and selection and use
++# wpa_supplicant just to process EAPOL frames based on IEEE 802.11 association
++# information from the driver.
++# 1: wpa_supplicant initiates scanning and AP selection
++# 0: driver takes care of scanning, AP selection, and IEEE 802.11 association
++# parameters (e.g., WPA IE generation); this mode can also be used with
++# non-WPA drivers when using IEEE 802.1X mode; do not try to associate with
++# APs (i.e., external program needs to control association). This mode must
++# also be used when using wired Ethernet drivers.
++# 2: like 0, but associate with APs using security policy and SSID (but not
++# BSSID); this can be used, e.g., with ndiswrapper and NDIS drivers to
++# enable operation with hidden SSIDs and optimized roaming; in this mode,
++# the network blocks in the configuration file are tried one by one until
++# the driver reports successful association; each network block should have
++# explicit security policy (i.e., only one option in the lists) for
++# key_mgmt, pairwise, group, proto variables
++ap_scan=1
++
++# EAP fast re-authentication
++# By default, fast re-authentication is enabled for all EAP methods that
++# support it. This variable can be used to disable fast re-authentication.
++# Normally, there is no need to disable this.
++fast_reauth=1
++
++# OpenSSL Engine support
++# These options can be used to load OpenSSL engines.
++# The two engines that are supported currently are shown below:
++# They are both from the opensc project (http://www.opensc.org/)
++# By default no engines are loaded.
++# make the opensc engine available
++#opensc_engine_path=/usr/lib64/engine_opensc.so
++# make the pkcs11 engine available
++#pkcs11_engine_path=/usr/lib64/engine_pkcs11.so
++# configure the path to the pkcs11 module required by the pkcs11 engine
++#pkcs11_module_path=/usr/lib64/opensc-pkcs11.so
++
++# Dynamic EAP methods
++# If EAP methods were built dynamically as shared object files, they need to be
++# loaded here before being used in the network blocks. By default, EAP methods
++# are included statically in the build, so these lines are not needed
++#load_dynamic_eap=/usr/lib/wpa_supplicant/eap_tls.so
++#load_dynamic_eap=/usr/lib/wpa_supplicant/eap_md5.so
++
++# Driver interface parameters
++# This field can be used to configure arbitrary driver interace parameters. The
++# format is specific to the selected driver interface. This field is not used
++# in most cases.
++#driver_param="field=value"
++
++# Country code
++# The ISO/IEC alpha2 country code for the country in which this device is
++# currently operating.
++#country=US
++
++# Maximum lifetime for PMKSA in seconds; default 43200
++#dot11RSNAConfigPMKLifetime=43200
++# Threshold for reauthentication (percentage of PMK lifetime); default 70
++#dot11RSNAConfigPMKReauthThreshold=70
++# Timeout for security association negotiation in seconds; default 60
++#dot11RSNAConfigSATimeout=60
++
++# Wi-Fi Protected Setup (WPS) parameters
++
++# Universally Unique IDentifier (UUID; see RFC 4122) of the device
++# If not configured, UUID will be generated based on the local MAC address.
++#uuid=12345678-9abc-def0-1234-56789abcdef0
++
++# Device Name
++# User-friendly description of device; up to 32 octets encoded in UTF-8
++#device_name=Wireless Client
++
++# Manufacturer
++# The manufacturer of the device (up to 64 ASCII characters)
++#manufacturer=Company
++
++# Model Name
++# Model of the device (up to 32 ASCII characters)
++#model_name=cmodel
++
++# Model Number
++# Additional device description (up to 32 ASCII characters)
++#model_number=123
++
++# Serial Number
++# Serial number of the device (up to 32 characters)
++#serial_number=12345
++
++# Primary Device Type
++# Used format: <categ>-<OUI>-<subcateg>
++# categ = Category as an integer value
++# OUI = OUI and type octet as a 4-octet hex-encoded value; 0050F204 for
++# default WPS OUI
++# subcateg = OUI-specific Sub Category as an integer value
++# Examples:
++# 1-0050F204-1 (Computer / PC)
++# 1-0050F204-2 (Computer / Server)
++# 5-0050F204-1 (Storage / NAS)
++# 6-0050F204-1 (Network Infrastructure / AP)
++#device_type=1-0050F204-1
++
++# OS Version
++# 4-octet operating system version number (hex string)
++#os_version=01020300
++
++# Credential processing
++# 0 = process received credentials internally (default)
++# 1 = do not process received credentials; just pass them over ctrl_iface to
++# external program(s)
++# 2 = process received credentials internally and pass them over ctrl_iface
++# to external program(s)
++#wps_cred_processing=0
++
++# network block
++#
++# Each network (usually AP's sharing the same SSID) is configured as a separate
++# block in this configuration file. The network blocks are in preference order
++# (the first match is used).
++#
++# network block fields:
++#
++# disabled:
++# 0 = this network can be used (default)
++# 1 = this network block is disabled (can be enabled through ctrl_iface,
++# e.g., with wpa_cli or wpa_gui)
++#
++# id_str: Network identifier string for external scripts. This value is passed
++# to external action script through wpa_cli as WPA_ID_STR environment
++# variable to make it easier to do network specific configuration.
++#
++# ssid: SSID (mandatory); either as an ASCII string with double quotation or
++# as hex string; network name
++#
++# scan_ssid:
++# 0 = do not scan this SSID with specific Probe Request frames (default)
++# 1 = scan with SSID-specific Probe Request frames (this can be used to
++# find APs that do not accept broadcast SSID or use multiple SSIDs;
++# this will add latency to scanning, so enable this only when needed)
++#
++# bssid: BSSID (optional); if set, this network block is used only when
++# associating with the AP using the configured BSSID
++#
++# priority: priority group (integer)
++# By default, all networks will get same priority group (0). If some of the
++# networks are more desirable, this field can be used to change the order in
++# which wpa_supplicant goes through the networks when selecting a BSS. The
++# priority groups will be iterated in decreasing priority (i.e., the larger the
++# priority value, the sooner the network is matched against the scan results).
++# Within each priority group, networks will be selected based on security
++# policy, signal strength, etc.
++# Please note that AP scanning with scan_ssid=1 and ap_scan=2 mode are not
++# using this priority to select the order for scanning. Instead, they try the
++# networks in the order that used in the configuration file.
++#
++# mode: IEEE 802.11 operation mode
++# 0 = infrastructure (Managed) mode, i.e., associate with an AP (default)
++# 1 = IBSS (ad-hoc, peer-to-peer)
++# Note: IBSS can only be used with key_mgmt NONE (plaintext and static WEP)
++# and key_mgmt=WPA-NONE (fixed group key TKIP/CCMP). In addition, ap_scan has
++# to be set to 2 for IBSS. WPA-None requires following network block options:
++# proto=WPA, key_mgmt=WPA-NONE, pairwise=NONE, group=TKIP (or CCMP, but not
++# both), and psk must also be set.
++#
++# frequency: Channel frequency in megahertz (MHz) for IBSS, e.g.,
++# 2412 = IEEE 802.11b/g channel 1. This value is used to configure the initial
++# channel for IBSS (adhoc) networks. It is ignored in the infrastructure mode.
++# In addition, this value is only used by the station that creates the IBSS. If
++# an IBSS network with the configured SSID is already present, the frequency of
++# the network will be used instead of this configured value.
++#
++# proto: list of accepted protocols
++# WPA = WPA/IEEE 802.11i/D3.0
++# RSN = WPA2/IEEE 802.11i (also WPA2 can be used as an alias for RSN)
++# If not set, this defaults to: WPA RSN
++#
++# key_mgmt: list of accepted authenticated key management protocols
++# WPA-PSK = WPA pre-shared key (this requires 'psk' field)
++# WPA-EAP = WPA using EAP authentication
++# IEEE8021X = IEEE 802.1X using EAP authentication and (optionally) dynamically
++# generated WEP keys
++# NONE = WPA is not used; plaintext or static WEP could be used
++# WPA-PSK-SHA256 = Like WPA-PSK but using stronger SHA256-based algorithms
++# WPA-EAP-SHA256 = Like WPA-EAP but using stronger SHA256-based algorithms
++# If not set, this defaults to: WPA-PSK WPA-EAP
++#
++# auth_alg: list of allowed IEEE 802.11 authentication algorithms
++# OPEN = Open System authentication (required for WPA/WPA2)
++# SHARED = Shared Key authentication (requires static WEP keys)
++# LEAP = LEAP/Network EAP (only used with LEAP)
++# If not set, automatic selection is used (Open System with LEAP enabled if
++# LEAP is allowed as one of the EAP methods).
++#
++# pairwise: list of accepted pairwise (unicast) ciphers for WPA
++# CCMP = AES in Counter mode with CBC-MAC [RFC 3610, IEEE 802.11i/D7.0]
++# TKIP = Temporal Key Integrity Protocol [IEEE 802.11i/D7.0]
++# NONE = Use only Group Keys (deprecated, should not be included if APs support
++# pairwise keys)
++# If not set, this defaults to: CCMP TKIP
++#
++# group: list of accepted group (broadcast/multicast) ciphers for WPA
++# CCMP = AES in Counter mode with CBC-MAC [RFC 3610, IEEE 802.11i/D7.0]
++# TKIP = Temporal Key Integrity Protocol [IEEE 802.11i/D7.0]
++# WEP104 = WEP (Wired Equivalent Privacy) with 104-bit key
++# WEP40 = WEP (Wired Equivalent Privacy) with 40-bit key [IEEE 802.11]
++# If not set, this defaults to: CCMP TKIP WEP104 WEP40
++#
++# psk: WPA preshared key; 256-bit pre-shared key
++# The key used in WPA-PSK mode can be entered either as 64 hex-digits, i.e.,
++# 32 bytes or as an ASCII passphrase (in which case, the real PSK will be
++# generated using the passphrase and SSID). ASCII passphrase must be between
++# 8 and 63 characters (inclusive).
++# This field is not needed, if WPA-EAP is used.
++# Note: Separate tool, wpa_passphrase, can be used to generate 256-bit keys
++# from ASCII passphrase. This process uses lot of CPU and wpa_supplicant
++# startup and reconfiguration time can be optimized by generating the PSK only
++# only when the passphrase or SSID has actually changed.
++#
++# eapol_flags: IEEE 802.1X/EAPOL options (bit field)
++# Dynamic WEP key required for non-WPA mode
++# bit0 (1): require dynamically generated unicast WEP key
++# bit1 (2): require dynamically generated broadcast WEP key
++# (3 = require both keys; default)
++# Note: When using wired authentication, eapol_flags must be set to 0 for the
++# authentication to be completed successfully.
++#
++# mixed_cell: This option can be used to configure whether so called mixed
++# cells, i.e., networks that use both plaintext and encryption in the same
++# SSID, are allowed when selecting a BSS form scan results.
++# 0 = disabled (default)
++# 1 = enabled
++#
++# proactive_key_caching:
++# Enable/disable opportunistic PMKSA caching for WPA2.
++# 0 = disabled (default)
++# 1 = enabled
++#
++# wep_key0..3: Static WEP key (ASCII in double quotation, e.g. "abcde" or
++# hex without quotation, e.g., 0102030405)
++# wep_tx_keyidx: Default WEP key index (TX) (0..3)
++#
++# peerkey: Whether PeerKey negotiation for direct links (IEEE 802.11e DLS) is
++# allowed. This is only used with RSN/WPA2.
++# 0 = disabled (default)
++# 1 = enabled
++#peerkey=1
++#
++# wpa_ptk_rekey: Maximum lifetime for PTK in seconds. This can be used to
++# enforce rekeying of PTK to mitigate some attacks against TKIP deficiencies.
++#
++# Following fields are only used with internal EAP implementation.
++# eap: space-separated list of accepted EAP methods
++# MD5 = EAP-MD5 (unsecure and does not generate keying material ->
++# cannot be used with WPA; to be used as a Phase 2 method
++# with EAP-PEAP or EAP-TTLS)
++# MSCHAPV2 = EAP-MSCHAPv2 (cannot be used separately with WPA; to be used
++# as a Phase 2 method with EAP-PEAP or EAP-TTLS)
++# OTP = EAP-OTP (cannot be used separately with WPA; to be used
++# as a Phase 2 method with EAP-PEAP or EAP-TTLS)
++# GTC = EAP-GTC (cannot be used separately with WPA; to be used
++# as a Phase 2 method with EAP-PEAP or EAP-TTLS)
++# TLS = EAP-TLS (client and server certificate)
++# PEAP = EAP-PEAP (with tunnelled EAP authentication)
++# TTLS = EAP-TTLS (with tunnelled EAP or PAP/CHAP/MSCHAP/MSCHAPV2
++# authentication)
++# If not set, all compiled in methods are allowed.
++#
++# identity: Identity string for EAP
++# This field is also used to configure user NAI for
++# EAP-PSK/PAX/SAKE/GPSK.
++# anonymous_identity: Anonymous identity string for EAP (to be used as the
++# unencrypted identity with EAP types that support different tunnelled
++# identity, e.g., EAP-TTLS)
++# password: Password string for EAP. This field can include either the
++# plaintext password (using ASCII or hex string) or a NtPasswordHash
++# (16-byte MD4 hash of password) in hash:<32 hex digits> format.
++# NtPasswordHash can only be used when the password is for MSCHAPv2 or
++# MSCHAP (EAP-MSCHAPv2, EAP-TTLS/MSCHAPv2, EAP-TTLS/MSCHAP, LEAP).
++# EAP-PSK (128-bit PSK), EAP-PAX (128-bit PSK), and EAP-SAKE (256-bit
++# PSK) is also configured using this field. For EAP-GPSK, this is a
++# variable length PSK.
++# ca_cert: File path to CA certificate file (PEM/DER). This file can have one
++# or more trusted CA certificates. If ca_cert and ca_path are not
++# included, server certificate will not be verified. This is insecure and
++# a trusted CA certificate should always be configured when using
++# EAP-TLS/TTLS/PEAP. Full path should be used since working directory may
++# change when wpa_supplicant is run in the background.
++# On Windows, trusted CA certificates can be loaded from the system
++# certificate store by setting this to cert_store://<name>, e.g.,
++# ca_cert="cert_store://CA" or ca_cert="cert_store://ROOT".
++# Note that when running wpa_supplicant as an application, the user
++# certificate store (My user account) is used, whereas computer store
++# (Computer account) is used when running wpasvc as a service.
++# ca_path: Directory path for CA certificate files (PEM). This path may
++# contain multiple CA certificates in OpenSSL format. Common use for this
++# is to point to system trusted CA list which is often installed into
++# directory like /etc/ssl/certs. If configured, these certificates are
++# added to the list of trusted CAs. ca_cert may also be included in that
++# case, but it is not required.
++# client_cert: File path to client certificate file (PEM/DER)
++# Full path should be used since working directory may change when
++# wpa_supplicant is run in the background.
++# Alternatively, a named configuration blob can be used by setting this
++# to blob://<blob name>.
++# private_key: File path to client private key file (PEM/DER/PFX)
++# When PKCS#12/PFX file (.p12/.pfx) is used, client_cert should be
++# commented out. Both the private key and certificate will be read from
++# the PKCS#12 file in this case. Full path should be used since working
++# directory may change when wpa_supplicant is run in the background.
++# Windows certificate store can be used by leaving client_cert out and
++# configuring private_key in one of the following formats:
++# cert://substring_to_match
++# hash://certificate_thumbprint_in_hex
++# for example: private_key="hash://63093aa9c47f56ae88334c7b65a4"
++# Note that when running wpa_supplicant as an application, the user
++# certificate store (My user account) is used, whereas computer store
++# (Computer account) is used when running wpasvc as a service.
++# Alternatively, a named configuration blob can be used by setting this
++# to blob://<blob name>.
++# private_key_passwd: Password for private key file (if left out, this will be
++# asked through control interface)
++# dh_file: File path to DH/DSA parameters file (in PEM format)
++# This is an optional configuration file for setting parameters for an
++# ephemeral DH key exchange. In most cases, the default RSA
++# authentication does not use this configuration. However, it is possible
++# setup RSA to use ephemeral DH key exchange. In addition, ciphers with
++# DSA keys always use ephemeral DH keys. This can be used to achieve
++# forward secrecy. If the file is in DSA parameters format, it will be
++# automatically converted into DH params.
++# subject_match: Substring to be matched against the subject of the
++# authentication server certificate. If this string is set, the server
++# sertificate is only accepted if it contains this string in the subject.
++# The subject string is in following format:
++# /C=US/ST=CA/L=San Francisco/CN=Test AS/emailAddress=as@example.com
++# altsubject_match: Semicolon separated string of entries to be matched against
++# the alternative subject name of the authentication server certificate.
++# If this string is set, the server sertificate is only accepted if it
++# contains one of the entries in an alternative subject name extension.
++# altSubjectName string is in following format: TYPE:VALUE
++# Example: EMAIL:server@example.com
++# Example: DNS:server.example.com;DNS:server2.example.com
++# Following types are supported: EMAIL, DNS, URI
++# phase1: Phase1 (outer authentication, i.e., TLS tunnel) parameters
++# (string with field-value pairs, e.g., "peapver=0" or
++# "peapver=1 peaplabel=1")
++# 'peapver' can be used to force which PEAP version (0 or 1) is used.
++# 'peaplabel=1' can be used to force new label, "client PEAP encryption",
++# to be used during key derivation when PEAPv1 or newer. Most existing
++# PEAPv1 implementation seem to be using the old label, "client EAP
++# encryption", and wpa_supplicant is now using that as the default value.
++# Some servers, e.g., Radiator, may require peaplabel=1 configuration to
++# interoperate with PEAPv1; see eap_testing.txt for more details.
++# 'peap_outer_success=0' can be used to terminate PEAP authentication on
++# tunneled EAP-Success. This is required with some RADIUS servers that
++# implement draft-josefsson-pppext-eap-tls-eap-05.txt (e.g.,
++# Lucent NavisRadius v4.4.0 with PEAP in "IETF Draft 5" mode)
++# include_tls_length=1 can be used to force wpa_supplicant to include
++# TLS Message Length field in all TLS messages even if they are not
++# fragmented.
++# sim_min_num_chal=3 can be used to configure EAP-SIM to require three
++# challenges (by default, it accepts 2 or 3)
++# result_ind=1 can be used to enable EAP-SIM and EAP-AKA to use
++# protected result indication.
++# 'crypto_binding' option can be used to control PEAPv0 cryptobinding
++# behavior:
++# * 0 = do not use cryptobinding (default)
++# * 1 = use cryptobinding if server supports it
++# * 2 = require cryptobinding
++# EAP-WSC (WPS) uses following options: pin=<Device Password> or
++# pbc=1.
++# phase2: Phase2 (inner authentication with TLS tunnel) parameters
++# (string with field-value pairs, e.g., "auth=MSCHAPV2" for EAP-PEAP or
++# "autheap=MSCHAPV2 autheap=MD5" for EAP-TTLS)
++# Following certificate/private key fields are used in inner Phase2
++# authentication when using EAP-TTLS or EAP-PEAP.
++# ca_cert2: File path to CA certificate file. This file can have one or more
++# trusted CA certificates. If ca_cert2 and ca_path2 are not included,
++# server certificate will not be verified. This is insecure and a trusted
++# CA certificate should always be configured.
++# ca_path2: Directory path for CA certificate files (PEM)
++# client_cert2: File path to client certificate file
++# private_key2: File path to client private key file
++# private_key2_passwd: Password for private key file
++# dh_file2: File path to DH/DSA parameters file (in PEM format)
++# subject_match2: Substring to be matched against the subject of the
++# authentication server certificate.
++# altsubject_match2: Substring to be matched against the alternative subject
++# name of the authentication server certificate.
++#
++# fragment_size: Maximum EAP fragment size in bytes (default 1398).
++# This value limits the fragment size for EAP methods that support
++# fragmentation (e.g., EAP-TLS and EAP-PEAP). This value should be set
++# small enough to make the EAP messages fit in MTU of the network
++# interface used for EAPOL. The default value is suitable for most
++# cases.
++#
++# EAP-FAST variables:
++# pac_file: File path for the PAC entries. wpa_supplicant will need to be able
++# to create this file and write updates to it when PAC is being
++# provisioned or refreshed. Full path to the file should be used since
++# working directory may change when wpa_supplicant is run in the
++# background. Alternatively, a named configuration blob can be used by
++# setting this to blob://<blob name>
++# phase1: fast_provisioning option can be used to enable in-line provisioning
++# of EAP-FAST credentials (PAC):
++# 0 = disabled,
++# 1 = allow unauthenticated provisioning,
++# 2 = allow authenticated provisioning,
++# 3 = allow both unauthenticated and authenticated provisioning
++# fast_max_pac_list_len=<num> option can be used to set the maximum
++# number of PAC entries to store in a PAC list (default: 10)
++# fast_pac_format=binary option can be used to select binary format for
++# storing PAC entries in order to save some space (the default
++# text format uses about 2.5 times the size of minimal binary
++# format)
++#
++# wpa_supplicant supports number of "EAP workarounds" to work around
++# interoperability issues with incorrectly behaving authentication servers.
++# These are enabled by default because some of the issues are present in large
++# number of authentication servers. Strict EAP conformance mode can be
++# configured by disabling workarounds with eap_workaround=0.
++
++# Example blocks:
++
++# Simple case: WPA-PSK, PSK as an ASCII passphrase, allow all valid ciphers
++network={
++ ssid="simple"
++ psk="very secret passphrase"
++ priority=5
++}
++
++# Same as previous, but request SSID-specific scanning (for APs that reject
++# broadcast SSID)
++network={
++ ssid="second ssid"
++ scan_ssid=1
++ psk="very secret passphrase"
++ priority=2
++}
++
++# Only WPA-PSK is used. Any valid cipher combination is accepted.
++network={
++ ssid="example"
++ proto=WPA
++ key_mgmt=WPA-PSK
++ pairwise=CCMP TKIP
++ group=CCMP TKIP WEP104 WEP40
++ psk=06b4be19da289f475aa46a33cb793029d4ab3db7a23ee92382eb0106c72ac7bb
++ priority=2
++}
++
++# WPA-Personal(PSK) with TKIP and enforcement for frequent PTK rekeying
++network={
++ ssid="example"
++ proto=WPA
++ key_mgmt=WPA-PSK
++ pairwise=TKIP
++ group=TKIP
++ psk="not so secure passphrase"
++ wpa_ptk_rekey=600
++}
++
++# Only WPA-EAP is used. Both CCMP and TKIP is accepted. An AP that used WEP104
++# or WEP40 as the group cipher will not be accepted.
++network={
++ ssid="example"
++ proto=RSN
++ key_mgmt=WPA-EAP
++ pairwise=CCMP TKIP
++ group=CCMP TKIP
++ eap=TLS
++ identity="user@example.com"
++ ca_cert="/etc/cert/ca.pem"
++ client_cert="/etc/cert/user.pem"
++ private_key="/etc/cert/user.prv"
++ private_key_passwd="password"
++ priority=1
++}
++
++# EAP-PEAP/MSCHAPv2 configuration for RADIUS servers that use the new peaplabel
++# (e.g., Radiator)
++network={
++ ssid="example"
++ key_mgmt=WPA-EAP
++ eap=PEAP
++ identity="user@example.com"
++ password="foobar"
++ ca_cert="/etc/cert/ca.pem"
++ phase1="peaplabel=1"
++ phase2="auth=MSCHAPV2"
++ priority=10
++}
++
++# EAP-TTLS/EAP-MD5-Challenge configuration with anonymous identity for the
++# unencrypted use. Real identity is sent only within an encrypted TLS tunnel.
++network={
++ ssid="example"
++ key_mgmt=WPA-EAP
++ eap=TTLS
++ identity="user@example.com"
++ anonymous_identity="anonymous@example.com"
++ password="foobar"
++ ca_cert="/etc/cert/ca.pem"
++ priority=2
++}
++
++# EAP-TTLS/MSCHAPv2 configuration with anonymous identity for the unencrypted
++# use. Real identity is sent only within an encrypted TLS tunnel.
++network={
++ ssid="example"
++ key_mgmt=WPA-EAP
++ eap=TTLS
++ identity="user@example.com"
++ anonymous_identity="anonymous@example.com"
++ password="foobar"
++ ca_cert="/etc/cert/ca.pem"
++ phase2="auth=MSCHAPV2"
++}
++
++# WPA-EAP, EAP-TTLS with different CA certificate used for outer and inner
++# authentication.
++network={
++ ssid="example"
++ key_mgmt=WPA-EAP
++ eap=TTLS
++ # Phase1 / outer authentication
++ anonymous_identity="anonymous@example.com"
++ ca_cert="/etc/cert/ca.pem"
++ # Phase 2 / inner authentication
++ phase2="autheap=TLS"
++ ca_cert2="/etc/cert/ca2.pem"
++ client_cert2="/etc/cer/user.pem"
++ private_key2="/etc/cer/user.prv"
++ private_key2_passwd="password"
++ priority=2
++}
++
++# Both WPA-PSK and WPA-EAP is accepted. Only CCMP is accepted as pairwise and
++# group cipher.
++network={
++ ssid="example"
++ bssid=00:11:22:33:44:55
++ proto=WPA RSN
++ key_mgmt=WPA-PSK WPA-EAP
++ pairwise=CCMP
++ group=CCMP
++ psk=06b4be19da289f475aa46a33cb793029d4ab3db7a23ee92382eb0106c72ac7bb
++}
++
++# Special characters in SSID, so use hex string. Default to WPA-PSK, WPA-EAP
++# and all valid ciphers.
++network={
++ ssid=00010203
++ psk=000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
++}
++
++
++# EAP-SIM with a GSM SIM or USIM
++network={
++ ssid="eap-sim-test"
++ key_mgmt=WPA-EAP
++ eap=SIM
++ pin="1234"
++ pcsc=""
++}
++
++
++# EAP-PSK
++network={
++ ssid="eap-psk-test"
++ key_mgmt=WPA-EAP
++ eap=PSK
++ anonymous_identity="eap_psk_user"
++ password=06b4be19da289f475aa46a33cb793029
++ identity="eap_psk_user@example.com"
++}
++
++
++# IEEE 802.1X/EAPOL with dynamically generated WEP keys (i.e., no WPA) using
++# EAP-TLS for authentication and key generation; require both unicast and
++# broadcast WEP keys.
++network={
++ ssid="1xtest"
++ key_mgmt=IEEE8021X
++ eap=TLS
++ identity="user@example.com"
++ ca_cert="/etc/cert/ca.pem"
++ client_cert="/etc/cert/user.pem"
++ private_key="/etc/cert/user.prv"
++ private_key_passwd="password"
++ eapol_flags=3
++}
++
++
++# LEAP with dynamic WEP keys
++network={
++ ssid="leap-example"
++ key_mgmt=IEEE8021X
++ eap=LEAP
++ identity="user"
++ password="foobar"
++}
++
++# EAP-IKEv2 using shared secrets for both server and peer authentication
++network={
++ ssid="ikev2-example"
++ key_mgmt=WPA-EAP
++ eap=IKEV2
++ identity="user"
++ password="foobar"
++}
++
++# EAP-FAST with WPA (WPA or WPA2)
++network={
++ ssid="eap-fast-test"
++ key_mgmt=WPA-EAP
++ eap=FAST
++ anonymous_identity="FAST-000102030405"
++ identity="username"
++ password="password"
++ phase1="fast_provisioning=1"
++ pac_file="/etc/wpa_supplicant.eap-fast-pac"
++}
++
++network={
++ ssid="eap-fast-test"
++ key_mgmt=WPA-EAP
++ eap=FAST
++ anonymous_identity="FAST-000102030405"
++ identity="username"
++ password="password"
++ phase1="fast_provisioning=1"
++ pac_file="blob://eap-fast-pac"
++}
++
++# Plaintext connection (no WPA, no IEEE 802.1X)
++network={
++ ssid="plaintext-test"
++ key_mgmt=NONE
++}
++
++
++# Shared WEP key connection (no WPA, no IEEE 802.1X)
++network={
++ ssid="static-wep-test"
++ key_mgmt=NONE
++ wep_key0="abcde"
++ wep_key1=0102030405
++ wep_key2="1234567890123"
++ wep_tx_keyidx=0
++ priority=5
++}
++
++
++# Shared WEP key connection (no WPA, no IEEE 802.1X) using Shared Key
++# IEEE 802.11 authentication
++network={
++ ssid="static-wep-test2"
++ key_mgmt=NONE
++ wep_key0="abcde"
++ wep_key1=0102030405
++ wep_key2="1234567890123"
++ wep_tx_keyidx=0
++ priority=5
++ auth_alg=SHARED
++}
++
++
++# IBSS/ad-hoc network with WPA-None/TKIP.
++network={
++ ssid="test adhoc"
++ mode=1
++ frequency=2412
++ proto=WPA
++ key_mgmt=WPA-NONE
++ pairwise=NONE
++ group=TKIP
++ psk="secret passphrase"
++}
++
++
++# Catch all example that allows more or less all configuration modes
++network={
++ ssid="example"
++ scan_ssid=1
++ key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONE
++ pairwise=CCMP TKIP
++ group=CCMP TKIP WEP104 WEP40
++ psk="very secret passphrase"
++ eap=TTLS PEAP TLS
++ identity="user@example.com"
++ password="foobar"
++ ca_cert="/etc/cert/ca.pem"
++ client_cert="/etc/cert/user.pem"
++ private_key="/etc/cert/user.prv"
++ private_key_passwd="password"
++ phase1="peaplabel=0"
++}
++
++# Example of EAP-TLS with smartcard (openssl engine)
++network={
++ ssid="example"
++ key_mgmt=WPA-EAP
++ eap=TLS
++ proto=RSN
++ pairwise=CCMP TKIP
++ group=CCMP TKIP
++ identity="user@example.com"
++ ca_cert="/etc/cert/ca.pem"
++ client_cert="/etc/cert/user.pem"
++
++ engine=1
++
++ # The engine configured here must be available. Look at
++ # OpenSSL engine support in the global section.
++ # The key available through the engine must be the private key
++ # matching the client certificate configured above.
++
++ # use the opensc engine
++ #engine_id="opensc"
++ #key_id="45"
++
++ # use the pkcs11 engine
++ engine_id="pkcs11"
++ key_id="id_45"
++
++ # Optional PIN configuration; this can be left out and PIN will be
++ # asked through the control interface
++ pin="1234"
++}
++
++# Example configuration showing how to use an inlined blob as a CA certificate
++# data instead of using external file
++network={
++ ssid="example"
++ key_mgmt=WPA-EAP
++ eap=TTLS
++ identity="user@example.com"
++ anonymous_identity="anonymous@example.com"
++ password="foobar"
++ ca_cert="blob://exampleblob"
++ priority=20
++}
++
++blob-base64-exampleblob={
++SGVsbG8gV29ybGQhCg==
++}
++
++
++# Wildcard match for SSID (plaintext APs only). This example select any
++# open AP regardless of its SSID.
++network={
++ key_mgmt=NONE
++}
++network={
++ ssid="qiaomuf"
++ key_mgmt=WPA-EAP
++ eap=TLS
++ identity="user@example.com"
++ ca_cert="/home/gentoo/temp/ca.pem"
++ client_cert="/home/gentoo/temp/client.pem"
++ private_key="/home/gentoo/temp/client.p12"
++ private_key_passwd="whatever"
++# phase2="auth=MSCHAPV2"
++ priority=10
++}
++network={
++ ssid="myxjtu2"
++ scan_ssid=1
++ key_mgmt=WPA-PSK
++ psk="xjtudlc3731"
++ disabled=0
++ key_mgmt=NONE
++ wep_key0="12345"
++ wep_key1=1234567890
++ wep_key2="zxcvb"
++ wep_tx_keyidx=1
++ auth_alg=OPEN
++ mode=1
++}
++network={
++ ssid=ab3ace
++ key_mgmt=WPA-EAP
++ eap=TTLS
++ identity="user@example.com"
++ anonymous_identity="anonymous@example.com"
++ password="foobar"
++ ca_cert="blob://exampleblob"
++ priority=20
++}
diff --git a/net-misc/networkmanager/networkmanager-0.8.2-r100.ebuild b/net-misc/networkmanager/networkmanager-0.8.2-r100.ebuild
new file mode 100644
index 0000000..8d230b3
--- /dev/null
+++ b/net-misc/networkmanager/networkmanager-0.8.2-r100.ebuild
@@ -0,0 +1,146 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-misc/networkmanager/networkmanager-0.8.2.ebuild,v 1.1 2010/11/10 12:57:16 dagger Exp $
+
+EAPI="2"
+
+inherit gnome.org linux-info
+
+# NetworkManager likes itself with capital letters
+MY_PN=${PN/networkmanager/NetworkManager}
+MY_P=${MY_PN}-${PV}
+
+DESCRIPTION="Network configuration and management in an easy way. Desktop environment independent."
+HOMEPAGE="http://www.gnome.org/projects/NetworkManager/"
+SRC_URI="${SRC_URI//${PN}/${MY_PN}}"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS=""
+IUSE="avahi bluetooth doc nss gnutls dhclient dhcpcd kernel_linux resolvconf connection-sharing"
+
+RDEPEND=">=sys-apps/dbus-1.2
+ >=dev-libs/dbus-glib-0.75
+ >=net-wireless/wireless-tools-28_pre9
+ >=sys-fs/udev-145[extras]
+ >=dev-libs/glib-2.18
+ >=sys-auth/polkit-0.92
+ >=dev-libs/libnl-1.1
+ >=net-misc/modemmanager-0.4
+ >=net-wireless/wpa_supplicant-0.5.10[dbus]
+ bluetooth? ( net-wireless/bluez )
+ || ( sys-libs/e2fsprogs-libs <sys-fs/e2fsprogs-1.41.0 )
+ avahi? ( net-dns/avahi[autoipd] )
+ gnutls? (
+ nss? ( >=dev-libs/nss-3.11 )
+ !nss? ( dev-libs/libgcrypt
+ net-libs/gnutls ) )
+ !gnutls? ( >=dev-libs/nss-3.11 )
+ dhclient? (
+ dhcpcd? ( >=net-misc/dhcpcd-4.0.0_rc3 )
+ !dhcpcd? ( net-misc/dhcp ) )
+ !dhclient? ( >=net-misc/dhcpcd-4.0.0_rc3 )
+ resolvconf? ( net-dns/openresolv )
+ connection-sharing? (
+ net-dns/dnsmasq
+ net-firewall/iptables )"
+
+DEPEND="${RDEPEND}
+ dev-util/pkgconfig
+ dev-util/intltool
+ >=net-dialup/ppp-2.4.5
+ doc? ( >=dev-util/gtk-doc-1.8 )"
+
+S=${WORKDIR}/${MY_P}
+
+sysfs_deprecated_check() {
+ ebegin "Checking for SYSFS_DEPRECATED support"
+
+ if { linux_chkconfig_present SYSFS_DEPRECATED_V2; }; then
+ eerror "Please disable SYSFS_DEPRECATED_V2 support in your kernel config and recompile your kernel"
+ eerror "or NetworkManager will not work correctly."
+ eerror "See http://bugs.gentoo.org/333639 for more info."
+ die "CONFIG_SYSFS_DEPRECATED_V2 support detected!"
+ fi
+ eend $?
+}
+
+pkg_setup() {
+
+ if use kernel_linux; then
+ get_version
+ if linux_config_exists; then
+ sysfs_deprecated_check
+ else
+ ewarn "Was unable to determine your kernel .config"
+ ewarn "Please note that if CONFIG_SYSFS_DEPRECATED_V2 is set in your kernel .config, NetworkManager will not work correctly."
+ ewarn "See http://bugs.gentoo.org/333639 for more info."
+ fi
+
+ fi
+}
+
+src_prepare() {
+ # patch latest ifnet
+ epatch "${FILESDIR}/${P}-ifnet.patch"
+}
+
+src_configure() {
+ ECONF="--disable-more-warnings
+ --localstatedir=/var
+ --with-distro=gentoo
+ --with-dbus-sys-dir=/etc/dbus-1/system.d
+ --with-udev-dir=/etc/udev
+ --with-iptables=/sbin/iptables
+ $(use_enable doc gtk-doc)
+ $(use_with doc docs)
+ $(use_with resolvconf)"
+
+ # default is dhcpcd (if none or both are specified), ISC dchclient otherwise
+ if use dhclient ; then
+ if use dhcpcd ; then
+ ECONF="${ECONF} --with-dhcpcd --without-dhclient"
+ else
+ ECONF="${ECONF} --with-dhclient --without-dhcpcd"
+ fi
+ else
+ ECONF="${ECONF} --with-dhcpcd --without-dhclient"
+ fi
+
+ # default is NSS (if none or both are specified), GnuTLS otherwise
+ if use gnutls ; then
+ if use nss ; then
+ ECONF="${ECONF} --with-crypto=nss"
+ else
+ ECONF="${ECONF} --with-crypto=gnutls"
+ fi
+ else
+ ECONF="${ECONF} --with-crypto=nss"
+ fi
+
+ econf ${ECONF}
+}
+
+src_install() {
+ emake DESTDIR="${D}" install || die "emake install failed"
+
+ # Need to keep the /var/run/NetworkManager directory
+ keepdir /var/run/NetworkManager
+
+ # Need to keep the /etc/NetworkManager/dispatched.d for dispatcher scripts
+ keepdir /etc/NetworkManager/dispatcher.d
+
+ dodoc AUTHORS ChangeLog NEWS README TODO || die "dodoc failed"
+
+ # Add keyfile plugin support
+ keepdir /etc/NetworkManager/system-connections
+ insinto /etc/NetworkManager
+ newins "${FILESDIR}/nm-system-settings.conf-ifnet" nm-system-settings.conf \
+ || die "newins failed"
+}
+
+pkg_postinst() {
+ elog "You will need to reload DBus if this is your first time installing"
+ elog "NetworkManager, or if you're upgrading from 0.7 or older."
+ elog ""
+}