summaryrefslogtreecommitdiffstats
path: root/acl/acl-api/src/main/yang/interface-acl@2016-12-14.yang
blob: a54e3d8d4377b84585222e7e4884dc39df572109 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
module interface-acl {
  yang-version 1;
  namespace "urn:opendaylight:params:xml:ns:yang:interface:acl";
  prefix "ifc-acl";

  import ietf-interfaces {
    prefix "if";
  }

  import yang-ext {
    prefix "ext";
  }

  import ietf-access-control-list {
    prefix "acl";
  }

  organization
    "FD.io - The Fast Data Project";

  contact
    "Hc2vpp Wiki <https://wiki.fd.io/view/Hc2vpp>
     Mailing List <hc2vpp@lists.fd.io>";

  description
    "Provides augmentations to ietf-interfaces model for assigning ACLs via ACL plugin of VPP.

     Copyright (c) 2016 Cisco and/or its affiliates.

     Licensed under the Apache License, Version 2.0 (the 'License');
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at:

     http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an 'AS IS' BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.";

  revision "2016-12-14" {
    description "Initial revision of interface-acl model";
  }

  grouping vpp-acls-base-attributes  {
    description
      "List of ACLs of vpp-acl type"; // TODO(HC2VPP-201): express constraint in the model if possible
    list vpp-acls {
      key "type name";
      ordered-by user;

      leaf type {
        type acl:acl-type;
      }

      // FIXME(HC2VPP-290): define leafref in interface-acl or bump ietf-access-control-list
      leaf name {
        type acl:access-control-list-ref;
      }
    }
  }

  grouping vpp-macip-acls-base-attributes  {
    container vpp-macip-acl {
      description
        "ACL of vpp-macip-acl type"; // TODO(HC2VPP-201): express constraint in the model if possible

      leaf type {
        type acl:acl-type;
      }

      leaf name {
        type acl:access-control-list-ref;
      }
    }
  }

  grouping interface-acl-attributes {
    container acl {
      container ingress {
        uses vpp-acls-base-attributes;
        uses vpp-macip-acls-base-attributes;
      }
      container egress {
        uses vpp-acls-base-attributes;
      }
    }
  }

  augment /if:interfaces/if:interface {
    ext:augment-identifier "vpp-acl-interface-augmentation";
    uses interface-acl-attributes;
  }

  augment /if:interfaces-state/if:interface {
    ext:augment-identifier "vpp-acl-interface-state-augmentation";
    uses interface-acl-attributes;
  }

}