Sep
16
2009
DHCP 4.1.0p1 no-IPV6 no-installation

Τον τελευταίο καιρό προσπαθώ να θυμηθώ βασικές αρχές προγραμματισμού από τον καιρό που ήμουν φοιτητής. Δεν θεωρώ τον εαυτό του σε καμία περίπτωση προγραμματιστή. Μάλιστα οι κόποι μου αποτελούν μικρά patches (diffs) στην δουλειά που κάνουν ήδη άλλοι (hacks) και πιο ειδικά στο xfce.

Όμως απογοητεύτηκα αρκετά από τους προγραμματιστές της isc. Προσπαθώντας να εγκαταστήσω ένα dhcp server για τις ανάγκες ενός μικρού lan από τον πηγαίο κώδικα, διαπίστωσα ότι κατά το compilation που επέστρεφε ένα όχι και τόσο συνηθισμένο σφάλμα:

packet.c:139: error: ‘ip’ is used uninitialized in this function

Οκ προφανώς κάτι μου λείπει;
Αυτό δεν σκέφτεστε όλοι;

Κι όμως ….

Η έκδοση που χρησιμοποιώ είναι η current stable: DHCP 4.1.0p1 και μετά από αρκετό διάβασμα του κώδικα τελικά κατάφερα να βρω γιατί επιστρέφει το συγκεκριμένο μήνυμα.

Ο dhcp προσπαθεί by-default να υποστηρίξει IPV6. Οκ μέχρι εδώ όλα καλά.
Δυστυχώς όμως οι προγραμματιστές ΔΕΝ έχουν βάλει ένα IF-THEN-ELSE κατά την περίπτωση που το linux-box ΔΕΝ έχει ipv6!!! και για αυτό “σκάει” το compilation με το παραπάνω μήνυμα.

Η λύση είναι εξαιρετικά απλή: Πρέπει να απενεργοποιηθεί η υποστήριξη για IPV6

./configure --disable-dhcpv6; make; make install

Αλλά μέχρι να το βρεις από ξυρισμένος κόντρα, καταλήγεις σαν τον stallman

  1. Avatar di CoFfEeX CoFfEeX

    Thursday, September 17, 2009 - 00:19:59

    Βάλε Gentoo :-)
    Βάζεις ότι δεν θέλεις στο make.conf και δεν σε απασχολούν τέτοια πράγματα.

  2. Avatar di ebal ebal

    Thursday, September 17, 2009 - 04:50:37

    Thanks για την πρόταση.

    Αλλά τι σχέση έχει η διανομή με τον πηγαίο κώδικα του dhcp από την ISC;
    Αναφέρομαι στον έλεγχο για την υποστήριξη του ipv6. Μπορώ κάλλιστα να βάλω και το binary του archlinux. Ο λόγος που κάνω εγκατάσταση από πηγαίο κώδικα είναι γιατί θέλω να ενεργοποιήσω το debug και το chroot του dhcp στο compilation.

  3. Avatar di CoFfEeX CoFfEeX

    Thursday, September 17, 2009 - 13:09:35

    Για την περίπτωση που δεν θέλεις πουθενά υποστήριξη ipv6.
    Γιαυτό “Δυστυχώς όμως οι προγραμματιστές ΔΕΝ έχουν βάλει ένα IF-THEN-ELSE κατά την περίπτωση που το linux-box ΔΕΝ έχει ipv6” έχεις απόλυτο δίκιο.
    Τουλάχιστον το έγραφαν πουθενά σε κάποιο readme,faq κτλ ;