Gentoo Logo

1.  標準フック関数

start/stop操作に関連して呼び出される4つの関数が定義できます。 それらの関数は、一つの関数で複数のアダプタを制御できるように、インターフェース名が最初に渡されて呼び出されます。

対象のインターフェースの有効化処理や無効化処理が続行可能であることを示すには、preup()predown()関数の戻り値は、0 (成功)でなければなりません。 preup()がゼロ以外の値を返すと、インターフェースの有効化処理は中断されます。 predown()がゼロ以外の値を返すと、インターフェースの無効化処理の続行は認められません。

postup()postdown()関数の戻り値は無視されます。失敗を示す場合は何もすることがないからです。

${IFACE}には起動/停止しようとしているインターフェースが設定されます。 ${IFVAR}はbashが許容する変数名に変換された${IFACE}です。

コード表示 1.1: pre/post up/down関数の例

preup() {
  # 起動前のインターフェースの物理接続テスト。一部のネットワークアダプタ
  # にのみ有効です。ethtoolパッケージがインストールされている
  # 必要があります。
  if ethtool ${IFACE} | grep -q 'Link detected: no'; then
    ewarn "No link on ${IFACE}, aborting configuration"
    return 1
  fi

  # 成功時は0を忘れずに返します
  return 0
}

predown() {
  # このスクリプトのデフォルトの処理は、NFSルートのテストをして
  # その場合にインターフェースの停止処理を中断することです。predown()関数を
  # 定義するとこの処理を上書きしてしまうことに注意してください。やはり
  # その処理を必要とするなら、このような感じ...
  if is_net_fs /; then
    eerror "root filesystem is network mounted -- can't stop ${IFACE}"
    return 1
  fi

  # 成功時は0を忘れずに返します
  return 0
}

postup() {
  # この関数は、例えばダイナミックDNSサービスに登録するとき
  # 使えます。他にはインターフェースが起動したときにメールの送受信を
  # することにも使えます。
       return 0
}

postdown() {
  # この関数はほとんど一貫性のためにあります... まだこの関数を
  # 使用して行うのに何かふさわしいものを考え付いたことはありません ;-)
  return 0
}

1.  Wireless Toolsのフック関数

注意: WPA Supplicantとの組み合わせでは動作しません。- ですが${ESSID}${ESSIDVAR}変数はpostup()関数で利用可能です。

associate関数に関連して呼び出される2つの関数が定義できます。 それらの関数は、一つの関数で複数のアダプタを制御できるように、インターフェース名が最初に渡されて呼び出されます。

対象のインターフェースの有効化や無効化処理が続行可能であることを示すには、preassociate()関数の戻り値は、0 (成功)でなければなりません。 preassociate()ゼロ以外の値を返すと、インターフェースの有効化処理は中断されます。

postassociate()関数の戻り値は無視されます。失敗を示す場合は何もすることがないからです。

${ESSID}は接続しようしているAPの正確なESSIDが設定されます。 ${ESSIDVAR}はbashが許容する変数名に変換された${ESSID}です。

コード表示 1.1: pre/post associate関数

preassociate() {
  # 以下の処理は、leap_user_ESSIDとleap_pass_ESSIDの2つの設定変数
  # を追加します。接続されようとしているESSID向けに両方が設定されたら、
  # CISCO LEAPスクリプトを実行します。

  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() {
  # この関数はほとんど一貫性のためにあります... まだこの関数を
  # 使用して行うのに何かふさわしいものを考え付いたことはありません ;-)

  return 0
}

注意: ${ESSID}${ESSIDVAR}predown()postdown()関数では利用できません。

ページの更新日 2007年 5月 7日

このドキュメントのオリジナルバージョン の更新日は2011年 10月 30日

要約: If you're feeling adventurous, you can add your own functions to networking. もしあなたが冒険好きだったら、あなた独自の関数をネットワークの仕組みに組み込むことができます。

Donate to support our development efforts.

Copyright 2001-2012 Gentoo Foundation, Inc. Questions, Comments? Contact us.