#!/bin/sh

set -e

gen_interface()
{
    cat <<EOF
      ,{
        "name": "$1",
        "type": "iana-if-type:ethernetCsmacd",
        "ietf-ip:ipv6": {
	  "enabled": true,
	  "forwarding": false,
	  "dup-addr-detect-transmits": 1,
	  "autoconf": {
	    "create-global-addresses": true
	  }
	}
      }
EOF
}

phys_ifaces=$(ip -d -j link show | jq -r '
	 .[] |
	 select(.link_type == "ether") |
	 select(has("linkinfo") | not) |
	 .ifname')

cat <<EOF
{
  "ietf-interfaces:interfaces": {
    "interface": [
      {
        "name": "lo",
        "type": "iana-if-type:softwareLoopback",
        "ietf-ip:ipv4": {
          "address": [{ "ip": "127.0.0.1", "prefix-length": 8 }]
        },
        "ietf-ip:ipv6": {
          "address": [{ "ip": "::1", "prefix-length": 128 }]
        }
      }
$(for iface in $phys_ifaces; do gen_interface $iface; done)
    ]
  }
}
EOF
