Αν νιώθετε έτοιμοι για περιπέτεια, μπορείτε να προσθέσετε τις δικές σας συναρτήσεις για την δικτύωση. 8.1 2010-05-14
Εκτελέσιμα με βασικές συναρτήσεις

Τέσσερις συναρτήσεις μπορούν να οριστούν στο /etc/conf.d/net οι οποίες θα κληθούν γύρω από τις start/stop λειτουργίες. Οι συναρτήσεις καλούνται με το όνομα της διεπαφής πρώτο ώστε μια συνάρτηση να μπορεί να ελέγξει πολλαπλούς προσαρμογείς.

Οι τιμές που επιστρέφουν οι συναρτήσεις preup() και predown() θα πρέπει να είναι 0 (επιτυχία) για να δείξουν ότι η ρύθμιση ή απορρύθμιση της διεπαφής μπορεί να συνεχιστεί. Αν η preup() επιστρέψει μη μηδενική τιμή, τότε η ρύθμιση της διεπαφής θα ματαιωθεί. Αν η predown() επιστρέψει μη μηδενική τιμή, τότε η διεπαφή δεν θα επιτραπεί να συνεχίσει στην απορρύθμιση.

Οι τιμές που επιστρέφουν οι συναρτήσεις postup() και postdown() αγνοούνται καθότι δεν υπάρχει κάτι που μπορεί να γίνει αν δείξουν αποτυχία.

Η ${IFACE} είναι ορισμένη στην διεπαφή που ενεργοποιείται/απενεργοποιείται. Η ${IFVAR} είναι η ${IFACE} αλλαγμένη σε ένα όνομα μεταβλητής που επιτρέπεται στο bash.

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() {
  # Το προκαθορισμένο στο σενάριο είναι να ελέγξουμε για
  # root σε 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
}
Για περισσότερες πληροφορίες στη συγγραφή δικών σας συναρτήσεων, παρακαλώ διαβάστε το /etc/conf.d/net.example.
Συναρτήσεις εκτελέσιμων του Wireless Tools Αυτό δεν θα δουλέψει με το WPA Supplicant - αλλά οι μεταβλητές ${ESSID} και ${ESSIDVAR} είναι διαθέσιμες στην συνάρτηση postup().

Δύο συναρτήσεις μπορούν να οριστούν στο /etc/conf.d/net οι οποίες θα κληθούν γύρω από την συνάρτηση συσχέτισης. Οι συναρτήσεις καλούνται με το όνομα της διεπαφής πρώτο ώστε μία συνάρτηση να μπορεί να ελέγχει πολλαπλούς προσαρμογείς.

Οι τιμές που επιστρέφουν από την συνάρτηση preassociate() θα πρέπει να είναι 0 (επιτυχία) για να δείξουν ότι η ρύθμιση ή απορρύθμιση μιας διεπαφής μπορεί να συνεχιστεί. Αν η preassociate() επιστρέψει μια μη μηδενική τιμή, τότε η ρύθμιση της διεπαφής θα ματαιωθεί.

Η τιμή που επιστρέφει η συνάρτηση postassociate() αγνοείται καθότι δεν υπάρχει κάτι που μπορεί να γίνει αν δείξει αποτυχία.

Η ${ESSID} είναι ορισμένη στο ακριβές ESSID του AP στο οποίο συνδέεστε. Η ${ESSIDVAR} είναι η ${ESSID} αλλαγμένη σε ένα όνομα μεταβλητής που επιτρέπεται στο bash.

preassociate() {
  # Τα παρακάτω προσθέτουν δύο μεταβλητές ρύθμισης leap_user_ESSID
  # και leap_pass_ESSID. Όταν είναι και οι δύο ρυθμισμένες για το 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(). Για περισσότερες πληροφορίες στη συγγραφή δικών σας συναρτήσεων, παρακαλώ διαβάστε το /etc/conf.d/net.example.