This is Gentoo's testing wiki. It is a non-operational environment and its textual content is outdated.
Please visit our production wiki at https://wiki.gentoo.org
手册:PPC/网络/添加功能
PPC Handbook |
---|
安装 |
关于安装 |
选择安装媒介 |
配置网络 |
准备磁盘 |
安装stage3 |
安装基本系统 |
配置Linux内核 |
配置系统 |
安装系统工具 |
配置系统引导程序Bootloader |
收尾安装工作 |
使用Gentoo |
Portage介绍 |
USE标记 |
Portage功能特性 |
初始化脚本(Initscript)系统 |
环境变量 |
使用Portage |
文件和目录 |
变量 |
混合使用不同的软件分支 |
额外的工具 |
定制Portage树 |
高级特性 |
网络配置 |
入门 |
高级配置 |
模块化网络 |
无线 |
添加功能 |
动态管理 |
Standard function hooks
Four functions can be defined in /etc/conf.d/net 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.
The return values for the preup()
and predown()
functions should be 0 (success) to indicate that configuration or de-configuration 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 de-configuration.
The return values for the postup()
and postdown()
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 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. return 0 } postdown() { # This function is mostly here for completeness... I haven't # thought of anything nifty to do with it yet ;-) return 0 }
For more information on writing functions, please read /usr/share/doc/netifrc-*/net.example.bz2.
Wireless tools function hook
This will not work with WPA Supplicant - but the ${ESSID} and ${ESSIDVAR} variables are available in the
postup()
function.Two functions can be defined in /etc/conf.d/net which will be called surrounding the associate function. The functions are called with the interface name first so that one function can control multiple adapters.
The return values for the preassociate()
function should be 0 (success) to indicate that configuration or de-configuration of the interface can continue. If preassociate()
returns a non-zero value, then interface configuration will be aborted.
The return value for the postassociate()
function is ignored since there's nothing to do if it indicates failure.
${ESSID} is set to the exact ESSID of the AP the system is connecting to. ${ESSIDVAR} is ${ESSID} converted to a variable name bash allows.
preassociate() { # The below adds two configuration variables leap_user_ESSID # and leap_pass_ESSID. When they are both configured for the ESSID # being connected to then we run the CISCO LEAP script local user pass eval user=\"\$\{leap_user_${ESSIDVAR}\}\" eval pass=\"\$\{leap_pass_${ESSIDVAR}\}\" if [[ -n ${user} && -n ${pass} ]]; then if [[ ! -x /opt/cisco/bin/leapscript ]]; then eend "For LEAP support, please emerge net-misc/cisco-aironet-client-utils" return 1 fi einfo "Waiting for LEAP Authentication on \"${ESSID//\\\\//}\"" if /opt/cisco/bin/leapscript ${user} ${pass} | grep -q 'Login incorrect'; then ewarn "Login Failed for ${user}" return 1 fi fi return 0 } postassociate() { # This function is mostly here for completeness... I haven't # thought of anything nifty to do with it yet ;-) return 0 }
${ESSID} and ${ESSIDVAR} are unavailable in
predown()
and postdown()
functions.For more information on writing custom functions, please read /usr/share/doc/netifrc-*/net.example.bz2.