added arputil module
[vpnservice.git] / arputil / arputil-api / src / main / yang / odl-arputil.yang
diff --git a/arputil/arputil-api/src/main/yang/odl-arputil.yang b/arputil/arputil-api/src/main/yang/odl-arputil.yang
new file mode 100644 (file)
index 0000000..3f17695
--- /dev/null
@@ -0,0 +1,139 @@
+module odl-arputil {
+    yang-version 1;
+    namespace "urn:opendaylight:params:xml:ns:yang:arputil";
+    prefix "odl-arputil";
+
+    import ietf-interfaces {
+        prefix if;
+    }
+
+    import ietf-inet-types {
+        prefix inet;
+    }
+
+    import ietf-yang-types {
+        prefix yang;
+    }
+
+    import opendaylight-inventory {
+        prefix inv; revision-date 2013-08-19;
+    }
+
+    import config {
+        prefix config; revision-date 2013-04-05;
+    }
+
+    revision "2015-11-26" {
+        description "Arp Util module";
+    }
+
+
+    grouping interfaces {
+        list interface-address {
+           key interface;
+           leaf interface {
+                type leafref {
+                    path "/if:interfaces/if:interface/if:name";
+                }
+           }
+           leaf ip-address {
+                type inet:ip-address;
+           }
+        }
+    }
+
+
+    rpc get-mac {
+        input {
+            leaf ipaddress {
+                type inet:ip-address;
+            }
+            uses interfaces;
+        }
+        output {
+            leaf macaddress {
+                type yang:phys-address;
+            }
+        }
+    }
+
+    rpc send-arp-request {
+          input {
+              leaf ipaddress {
+                  type inet:ip-address;
+              }
+              uses interfaces;
+          }
+    }
+
+    rpc send-arp-response {
+          input {
+              leaf ipaddress {
+                  type inet:ip-address;
+              }
+              leaf macaddress {
+                  type yang:phys-address;
+              }
+              leaf interface {
+                  type leafref {
+                      path "/if:interfaces/if:interface/if:name";
+                  }
+              }
+              leaf src-ip-address {
+                  type inet:ip-address;
+              }
+          }
+    }
+
+
+    notification mac-changed {
+         leaf ipaddress {
+             type inet:ip-address;
+         }
+         leaf macaddress {
+             type yang:phys-address;
+         }
+         leaf interface {
+             type leafref {
+                path "/if:interfaces/if:interface/if:name";
+             }
+         }
+    }
+
+    notification arp-request-received {
+         leaf dst-ipaddress {
+             type inet:ip-address;
+         }
+         leaf src-ipaddress {
+             type inet:ip-address;
+         }
+         leaf src-mac {
+             type yang:phys-address;
+         }
+         leaf of-table-id {
+             type uint32;
+         }
+         leaf interface {
+             type leafref {
+                path "/if:interfaces/if:interface/if:name";
+            }
+         }
+    }
+
+    notification arp-response-received {
+         leaf ipaddress {
+             type inet:ip-address;
+         }
+         leaf macaddress {
+             type yang:phys-address;
+         }
+         leaf of-table-id {
+             type uint32;
+         }
+         leaf interface {
+             type leafref {
+                path "/if:interfaces/if:interface/if:name";
+            }
+         }
+    }
+}
\ No newline at end of file