Adding ONOS Segment Routing CLI files to new repo
diff --git a/cli/vendor.py b/cli/vendor.py
new file mode 100755
index 0000000..ca78c01
--- /dev/null
+++ b/cli/vendor.py
@@ -0,0 +1,76 @@
+#!/usr/bin/python
+#
+# Copyright (c) 2010,2011,2012,2013 Big Switch Networks, Inc.
+#
+# Licensed under the Eclipse Public License, Version 1.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.eclipse.org/legal/epl-v10.html
+#
+# 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.
+#
+
+#
+
+#
+# vendor.py - parse OUI information and look up vendors
+
+import re
+import os
+from pkg_resources import resource_stream
+
+class VendorDB():
+
+ vendors = {}
+
+ def init(self):
+ f = resource_stream(__name__, 'data/oui.txt')
+ if f is None:
+ p = os.path.join(os.path.dirname(__file__), "data", "oui.txt")
+ if not os.path.exists(p):
+ print "Warning: Vendor OUI file could not be located!"
+ return
+ f = open(p)
+
+ while True:
+ l = f.readline()
+ if len(l) ==0:
+ break # EOF
+ if l.count("(base 16)"):
+ oui = l[0:6]
+ vendor = l[22:]
+ self.add_vendor(oui,vendor)
+
+ def add_vendor(self, oui, vendor):
+ oui = oui.strip()
+ vendor = vendor.strip()
+ if len(oui) == 6 and len(vendor) > 1:
+ self.vendors[oui]=vendor
+
+ def get_vendor(self, mac):
+ if len(mac) < 6:
+ return "unknown"
+ mac = mac.upper() # To upper case
+ mac = re.sub(':','',mac) # filter any ":"
+ mac = mac[0:6]
+
+ # Strip broadcast and local bit
+ b = hex(int(mac[1:2],16) & int('1100',2))[2:3]
+ mac = mac[0:1]+b.upper()+mac[2:6]
+
+ if mac in self.vendors:
+ return self.vendors[mac]
+ else:
+ return "Unknown"
+
+# Show all records
+
+if __name__ == '__main__':
+ db = VendorDB()
+ db.init()
+ print db.vendors