liminix

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

udhcpc.nix (1831B)


      1 {
      2   liminix
      3 , writeAshScript
      4 , serviceFns
      5 } :
      6 let
      7   inherit (liminix.services) longrun;
      8 in
      9 interface: { dependencies ? [] } @ args:
     10 let
     11   name = "${interface.device}.udhcp";
     12   script = writeAshScript "udhcp-notify"  {
     13     # runtimeInputs = [ iproute2 ] using busybox version of ip
     14   } ''
     15     . ${serviceFns}
     16     exec 2>&1
     17     action=$1
     18 
     19     set_address() {
     20         ip address replace $ip/$mask dev $interface
     21         (in_outputs ${name}
     22          for i in lease mask ip router siaddr dns serverid subnet opt53 interface ; do
     23             printenv $i > $i
     24          done)
     25     }
     26     case $action in
     27       deconfig)
     28         ip address flush $interface
     29         ip link set up dev $interface
     30         ;;
     31       bound)
     32         # this doesn't actually replace, it adds a new address.
     33         set_address
     34         echo  >/proc/self/fd/10
     35         ;;
     36       renew)
     37         set_address
     38         ;;
     39       nak)
     40         echo "received NAK on $interface"
     41         ;;
     42     esac
     43   '';
     44 in longrun {
     45   inherit name;
     46   run = "/bin/udhcpc -f -i ${interface.device} -x hostname:$(cat /proc/sys/kernel/hostname) -s ${script}";
     47   notification-fd = 10;
     48   dependencies = [ interface ] ++ dependencies;
     49 }
     50 
     51 # lease=86400
     52 # mask=24
     53 # ip=10.0.2.15
     54 # router=10.0.2.2
     55 # siaddr=10.0.2.2
     56 # dns=10.0.2.3
     57 # serverid=10.0.2.2
     58 # subnet=255.255.255.0
     59 # SHLVL=2
     60 # opt53=05
     61 # interface=eth0
     62 # PATH=/nix/store/npy692wik809z3vdwrkrj2wixjkr33kp-busybox-mips-unknown-linux-musl-1.35.0/bin:/nix/store/
     63 # pj0b27l5728cypa5mmagz0q8ibzpik0h-execline-mips-unknown-linux-musl-2.9.0.1-bin/bin:/nix/store/rfjiw4dnv29daqc9971qmica1h86l0s0-s6-linux-init-mips-unknown-linux-musl-1.0.8.0-bin/bin:/nix/store/4wn3jm7yy2gfi0is0yy75lifbq5zjwz7-s6-rc-mips-unknown-linux-musl-0.5.3.2-bin/bin:/usr/bin:/bin
     64 # _=/nix/store/npy692wik809z3vdwrkrj2wixjkr33kp-busybox-mips-unknown-linux-musl-1.35.0/bin/env
     65 # /