Trans:GentooX86Handbook4-5

Gentoo Korea Wiki
둘러보기로 가기 검색하러 가기

기능 추가

표준 함수 훅

start/stop 함수 주변에서 호출 되는 네가지 함수를 /etc/conf.d/net에 정의할 수 있습니다. 이 함수들은 인터페이스 이름을 통해 먼저 호출되어 하나의 함수가 여러 개의 어댑터를 제어할 수 있습니다.

preup()predown() 함수의 반환 값은 인터페이스의 설정이나 설정 해제를 계속할 수 있음을 표시하기 위해 0(성공)이 되어야 합니다. preup()의 반환 값이 0이 아니면 인터페이스 설정이 중지됩니다. predown()의 반환 값이 0이 아니면, 인터페이스의 설정을 더 이상 해제할 수 없게 됩니다.

postup()postdown()함수의 반환 값은 위에서 명시한 함수들이 실패했음을 나타낼 경우 더 이상 아무것도 하지 않으므로 무시됩니다.

${IFACE} 는 인터페이스를 올리고 내릴 때 설정합니다. ${IFVAR}${IFACE}를 배시에서 허용하는 변수 이름으로 변환한 값입니다.


코드 예제 1.1: /etc/confi.d/net pre/post up/down 함수 예제
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
}



참고: 여러분의 함수에 대한 더 많은 내용을 보시려면 /usr/share/doc/openrc-*/net.example.bz2를 읽어보십시오.


Wireless Tools 함수 훅


참고: 이 함수는 WPA Supplicant에서 동작하지 않습니다 - 그러나 ${ESSID}${ESSIDVAR} 변수는 postup() 함수에서 사용할 수 있습니다.


associate 함수 주변에서 호출 되는 두가지 함수를 /etc/conf.d/net에 정의할 수 있습니다. 이 함수들은 인터페이스 이름을 통해 먼저 호출되어 하나의 함수가 여러 개의 어댑터를 제어할 수 있습니다.

preassociate() 함수의 반환 값은 인터페이스의 설정이나 설정 해제를 계속 할 수 있음을 표시하기 위해 0(성공)이 되어야 합니다. preassociate()의 반환 값이 0이 아니면 인터페이스 설정이 중지됩니다.

postassociate() 함수의 반환 값은 위에서 명시한 함수가 실패했음을 나타낼 경우 더 이상 아무것도 하지 않으므로 무시합니다.

${ESSID}는 여러분이 연결하려는 AP의 정확한 ESSID를 설정합니다. ${ESSIDVAR}${ESSID}를 배시에서 허용하는 변수 이름으로 변환한 값입니다.


코드 예제 2.1: /etc/conf.d/net의 pre/post association 함수
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
}