liminix

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

pppoe.nix (1041B)


      1 {
      2   liminix
      3 , lib
      4 , ppp
      5 , pppoe
      6 , writeAshScript
      7 , serviceFns
      8 } :
      9 { interface, ppp-options }:
     10 let
     11   inherit (liminix.services) longrun;
     12   name = "${interface.name}.pppoe";
     13   ip-up = writeAshScript "ip-up" {} ''
     14     . ${serviceFns} 
     15     (in_outputs ${name}
     16      echo $1 > ifname
     17      echo $2 > tty
     18      echo $3 > speed
     19      echo $4 > address
     20      echo $5 > peer-address
     21      echo $DNS1 > ns1
     22      echo $DNS2 > ns2
     23     )
     24     echo >/proc/self/fd/10
     25   '';
     26   ip6-up = writeAshScript "ip6-up" {} ''
     27     . ${serviceFns} 
     28     (in_outputs ${name}
     29      echo $4 > ipv6-address
     30      echo $5 > ipv6-peer-address
     31     )
     32     echo >/proc/self/fd/10
     33   '';
     34   ppp-options' = ppp-options ++ [
     35     "ip-up-script" ip-up
     36     "ipv6-up-script" ip6-up
     37     "ipparam" name
     38     "nodetach"
     39     "usepeerdns"
     40     "logfd" "2"
     41   ];
     42 in
     43 longrun {
     44   inherit name;
     45   run = ''
     46     . ${serviceFns} 
     47     ${ppp}/bin/pppd pty "${pppoe}/bin/pppoe -I $(output ${interface} ifname)" ${lib.concatStringsSep " " ppp-options'}
     48   '';
     49   notification-fd = 10;
     50   dependencies = [ interface ];
     51 }