module czechlight-network {
    yang-version 1.1;
    namespace "http://czechlight.cesnet.cz/yang/czechlight-network";
    prefix cla-network;

    import ietf-interfaces {
        prefix if;
    }

    import ietf-routing {
        prefix rt;
    }

    import ietf-ip {
        prefix ip;
    }

    import iana-if-type {
        prefix ianaift;
    }

    import ietf-ipv6-unicast-routing {
        prefix v6ur;
    }

    revision 2021-02-22 {
        description
            "Initial version. Removes interface statistics in ietf-interfaces model, removes deprecated container
             ietf-interfaces:interface-state and makes the nodes in ietf-interfaces model config false.";
    }

    // We don't support discontinuity time (yet)
    deviation /if:interfaces/if:interface/if:statistics/if:discontinuity-time { deviate not-supported; }

    // IPv6 router advertisements is not supported
    deviation /if:interfaces/if:interface/ip:ipv6/v6ur:ipv6-router-advertisements { deviate not-supported; }

    // Remove deprecated ietf-interfaces-state and ietf-routing containers. Beware, rt:routing-state references if:interfaces-state.
    deviation /rt:routing-state { deviate not-supported; }
    deviation /if:interfaces-state { deviate not-supported; }

    // As of now we implement the ietf-routing model to contain operational data only
    deviation /rt:routing { deviate add { config false; } }

    // We do not support configuring some parts of if:interfaces tree
    deviation /if:interfaces/if:interface/ip:ipv4/ip:forwarding { deviate add { config false; } }
    deviation /if:interfaces/if:interface/ip:ipv4/ip:mtu { deviate add { config false; } }
    deviation /if:interfaces/if:interface/ip:ipv4/ip:neighbor { deviate add { config false; } }
    deviation /if:interfaces/if:interface/ip:ipv6/ip:forwarding { deviate add { config false; } }
    deviation /if:interfaces/if:interface/ip:ipv6/ip:mtu { deviate add { config false; } }
    deviation /if:interfaces/if:interface/ip:ipv6/ip:neighbor { deviate add { config false; } }
    deviation /if:interfaces/if:interface/ip:ipv6/ip:dup-addr-detect-transmits { deviate add { config false; } }

    // User should not create new links or reconfigure link types
    deviation /if:interfaces/if:interface/if:name {
        deviate add {
            must '. = "br0" or . = "eth0" or . = "eth1" or . = "eth2" or . = "osc" or . = "oscW" or . = "oscE"' {
                error-message "Link name must be chosen from the following options: {br0, eth0, eth1, osc, oscW, oscE}.";
            }
        }
    }

    deviation /if:interfaces/if:interface/if:type {
        deviate add {
            must '(../if:name = "br0" and . = "ianaift:bridge") or
                  (../if:name = "eth0" and . = "ianaift:ethernetCsmacd") or
                  (../if:name = "eth1" and . = "ianaift:ethernetCsmacd") or
                  (../if:name = "eth2" and . = "ianaift:ethernetCsmacd") or
                  (../if:name = "osc" and . = "ianaift:ethernetCsmacd") or
                  (../if:name = "oscW" and . = "ianaift:ethernetCsmacd") or
                  (../if:name = "oscE" and . = "ianaift:ethernetCsmacd")' {
                error-message "Link type can't be reconfigured.";
            }
        }
    }

    augment /if:interfaces/if:interface {
        description "Add the option to add this link to a bridge.";

        leaf bridge {
            must '. = "br0"' {
                error-message "br0 is the only available bridge interface.";
            }

            when '(not(../ip:ipv4) or ../ip:ipv4/ip:enabled[.="false"]) and
                  (not(../ip:ipv6) or ../ip:ipv6/ip:enabled[.="false"])' {
                description "IP protocols must be disabled for enslaved link.";
            }

            type if:interface-ref;
            mandatory false;
            description "The name of the bridge to add the link to.";
        }
    }

    // Make it hard to accidentally lose connection by removing ipv4/ipv6 presence containers or all IP addresses
    deviation /if:interfaces/if:interface {
        deviate add {
            must 'if:enabled = "false" or
                  ip:ipv4/ip:enabled = "true" or
                  ip:ipv6/ip:enabled = "true" or
                  cla-network:bridge' {
                error-message "Enabled interface must always have at least one protocol active or it must be connected in the bridge.";
            }
		}
	}

    augment /if:interfaces/if:interface/ip:ipv4 {
        description "Add the IPv4 autoconfiguration option (DHCP client).";

        leaf dhcp-client {
            type boolean;
            default true;
            description "Enable DHCP client.";
        }
    }

    deviation /if:interfaces/if:interface/ip:ipv4 {
        deviate add {
            must 'ip:enabled = "false" or count(ip:address) > 0 or cla-network:dhcp-client = "true"' {
                error-message "There must always be at least one IPv4 address or the autoconfiguration must be turned on unless the protocol is disabled.";
            }
        }
    }

    deviation /if:interfaces/if:interface/ip:ipv6 {
        deviate add {
            must 'ip:enabled = "false" or count(ip:address) > 0 or ip:autoconf/ip:create-global-addresses = "true"' {
                error-message "There must always be at least one IPv6 address or the autoconfiguration must be turned on unless the protocol is disabled.";
            }
        }
    }

    identity dhcp {
        base rt:routing-protocol;
        description "Identity for route installed by DHCP.";
    }
    identity ra {
        base rt:routing-protocol;
        description "Identity for route installed by router advertisement.";
    }
}
