summaryrefslogtreecommitdiff
blob: 10c10c9e8e20f1c7281a74d3ae8b459738f4b14f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
##############################################################################
# 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 expresions
#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 specficy 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 todo 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"

##############################################################################
# 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
# incase 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 ocet 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" )

# 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" )

#-----------------------------------------------------------------------------
# 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 seperate
# 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
# depend_vlan1() {
#	need net.eth0
# }

#-----------------------------------------------------------------------------
# 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 write a depend function for the bond so they get
# configured correctly.
# This is exactly the same as a depend() function in our init scripts
#depend_br0() {
#       need net.eth0 net.eth1
#}


#-----------------------------------------------------------------------------
# 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
#cd /etc/init.d
#ln -s net.lo 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="/dev/null"			# PPPoA and 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"	# Required plugin for PPPoA
#	"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'
#
# 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=(
#	"updetach" 	# WARNING: If you don't specify this then we will
#			# not wait for the actual PPP link to go up
#	"maxfail 0"	# WARNING: It's not recommended you use change this
#			# if you don't specify maxfail then we assume 0
#	"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 write a depend function for the bridge so they get
# configured correctly.
# This is exactly the same as a depend() function in our init scripts
#depend_ppp0() {
#	need net.nas0
#}

#-----------------------------------------------------------------------------
# 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 (eg fibre,
# copper, wireless) , all vendors
#mac_eth0="random-samekind"
# - to randomize between any physical type of connection (eg 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_tun1=( "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 write a depend function for the bridge so they get
# configured correctly.
# This is exactly the same as a depend() function in our init scripts
#depend_br0() {
#	need net.eth0 net.eth1
#}

# NOTE: This creates an interface called br0 - you can give the interface
# any name you like

# 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 encapulation 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
# depend_6to4() {
#	need 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"

#-----------------------------------------------------------------------------
# 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 wiress 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 afair - 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 dependancies.

# 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