ハンドブック:SPARC/ネットワーク/拡張

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Handbook:SPARC/Networking/Extending and the translation is 100% complete.
SPARC ハンドブック
インストール
インストールについて
メディアの選択
ネットワーク設定
ディスクの準備
stage ファイル
ベースシステムのインストール
カーネルの設定
システムの設定
ツールのインストール
ブートローダの設定
締めくくり
Gentoo の操作
Portage について
USE フラグ
Portage の機能
Init スクリプトシステム
環境変数
Portage の操作
ファイルとディレクトリ
変数
ソフトウェアブランチの併用
追加ツール
カスタムパッケージリポジトリ
高度な機能
OpenRC ネットワーク設定
はじめに
高度な設定
モジュール式ネットワーク
無線
機能の追加
動的な管理


標準関数フック

/etc/conf.d/net 内では 4 つの関数を定義することができます:

  • preup()、インターフェースが up にされる前に呼ばれます;
  • predown()、インターフェースが down にされる前に呼ばれます;
  • postup()、インターフェースが up にされた後に呼ばれます;
  • postdown()、インターフェースが down にされた後に呼ばれます。

これらの関数はすべてインターフェース名を指定して呼び出されます。関数内ではインターフェース名は IFACE 変数を通じて利用でき、関数は複数のインターフェースを制御できるようになっています。

preup() および predown() 関数の戻り値は以下の通りであるべきです:

  • 成功し、インターフェースの構成または構成の解除を続行できることを表す、0。
  • それ以外の場合は 0 以外の値。

preup() が 0 以外の値を返すと、インターフェースの構成は中止されるでしょう。predown() が 0 以外の値を返すと、インターフェースの構成解除を続行することは許可されないでしょう。

postup() および postdown() 関数が失敗を示していたとしても、することは何もないので、これらの関数の戻り値は無視されます。

${IFACE} は、接続/切断されようとしているインターフェースに設定されます。${IFVAR} は bash が使用できる変数名に変換された ${IFACE} です。

ファイル /etc/conf.d/netpre/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
}
メモ
関数を書くためのさらなる情報いついては、/usr/share/doc/netifrc-*/net.example.bz2 をお読みください。

無線関数フック

メモ
これは WPA サプリカントとともには動作しないでしょう - しかし ${ESSID} および ${ESSIDVAR} 変数は postup() 関数で利用することができます。

/etc/conf.d/net 内では 2 つの関数を定義することができます:

  • preassociate()、アソシエーションの前に呼ばれます。
  • postassociate()、アソシエーションの後に呼ばれます。

これらの関数はすべてインターフェース名を指定して呼び出されます。関数内ではインターフェース名は IFACE 変数を通じて利用でき、関数は複数のインターフェースを制御できるようになっています。

preassociate() 関数の戻り値は以下の通りであるべきです:

  • 成功し、構成を続行することを表す、0。
  • それ以外の場合は 0 以外の値。

preassociate() が 0 以外の値を返すと、インターフェースの構成は中止されるでしょう。

postassociate() 関数の戻り値は、それが失敗を示してもすることが何も無いので、無視されます。

各関数内では、システムが接続しようとしている AP の完全な ESSID は ESSID 変数を介して利用できます。${ESSIDVAR} は bash が使用できる変数名に変換された ${ESSID} です。

ファイル /etc/conf.d/netpre/post アソシエーション関数
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() 関数では利用できません。
メモ
カスタム関数を書くためのさらなる情報いついては、/usr/share/doc/netifrc-*/net.example.bz2 をお読みください。