#!/bin/bash

find_template dhcpcd_conf_single network dhcpcd_single
find_template dhcpcd_conf        network dhcpcd
find_template resolvconf_conf    network resolvconf

interfaces="$(get_data "$getinterfaces")"

nameservers=$(echo "$interfaces" | \
  while read line; 
  do
    get_interfaces "$line"

    if [ ! "$nameserver" = "" ]; then
        echo -n "$nameserver "
    fi
done
)

prog='/####NAMESERVER####/ { if ( "'$nameservers'" == "" ) next; gsub(/####NAMESERVER####/, "'$nameservers'"); }
                           { print $0 }'

save_file "/etc/resolvconf.conf"
awk "$prog" "$resolvconf_conf" > "/etc/resolvconf.conf"

resolvconf -u >/dev/null 2>&1

dhcp=$(echo "$interfaces" | \
  while read line; 
  do
    get_interfaces "$line"

    if [ "$typ" = "static" ]; then
      prog='/####DEVICE####/     { gsub(/####DEVICE####/,"'$device'"); }
            /####DOMAIN####/     { gsub(/####DOMAIN####/, "'$domain'"); }
            /####ADDR####/       { if ( "'$addr'"       == "" || "'$typ'" != "static" ) next; gsub(/####ADDR####/, "'$addr'"); }
            /####MASK####/       { gsub(/####MASK####/, "'$mask'"); }
            /####ADDR6####/      { if ( "'$addr6'"      == "" || "'$typ'" != "static" ) next; gsub(/####ADDR6####/, "'$addr6'"); }
            /####MASK6####/      { gsub(/####MASK6####/, "'$mask6'"); }
            /####GW####/         { gsub(/####GW####/, "'$gw'"); }
            /####NAMESERVER####/ { gsub(/####NAMESERVER####/, "'$nameserver'"); }
            /####SEARCH####/     { gsub(/####SEARCH####/, "'$search'"); }
                                 { print $0 }'

      awk "$prog" "$dhcpcd_conf_single"
    fi
done
)

prog='/####DEVICECONFIG####/ { gsub(/####DEVICECONFIG####/,deviceconfig); }
                           { print $0 }'
                           
save_file "$dhcpcdconffile" 
awk "$prog" "deviceconfig=$dhcp" "$dhcpcd_conf" > "$dhcpcdconffile"

systemctl daemon-reload

mne_need_error
diff -q $dhcpcdconffile $savedfile >/dev/null
if [ ! "$errorresult" = "0" ]; then
  needreboot=1
fi
