def insert_routes(self, start, end, newApi): self.tracer.trace1("Starting to insert {} routes, \ starting at route# {}".format(end, start)) for i in range(start, end): first = 200 + (i / 65536) second = (i / 256) % 256 third = i % 256 addrStr = "%d.%d.%d.0" % (first, second, third) prefix = eossdk.IpPrefix(eossdk.IpAddr(addrStr), 24) if i % 2550 == 0: self.tracer.trace3("Adding prefix " + prefix.to_string()) rkey = eossdk.IpRouteKey(prefix) route = eossdk.IpRoute(rkey) route.tag_is(self.tag) via = eossdk.IpRouteVia(rkey) via.nexthop_group_is("mpls_nhg") if not newApi: self.ipMgr.ip_route_set(route) else: self.ipMgr.ip_route_set(route, eossdk.IP_ROUTE_ACTION_NEXTHOP_GROUP) self.ipMgr.ip_route_via_set(via) self.tracer.trace1("Finished inserting {} routes, \ starting at route# {}".format(end, start))
def create_ip_v6_route_key(self, i): first = (i / 65536) % 65536 second = i % 65536 addrStr = "%04x:%04x::" % (first, second) ip = eossdk.IpAddr(addrStr) prefix6 = eossdk.IpPrefix(ip, 64) rkey6 = eossdk.IpRouteKey(prefix6) return rkey6
def create_ip_route_key(self, i): first = 200 + (i / 65536) second = (i / 256) % 256 third = i % 256 addrStr = "%d.%d.%d.0" % (first, second, third) prefix = eossdk.IpPrefix(eossdk.IpAddr(addrStr), 24) if i % 2550 == 0: self.tracer.trace3("Adding prefix %s" % prefix.to_string()) rkey = eossdk.IpRouteKey(prefix) return rkey
def _set_route(self, prefix, nexthop_group): """ { "command": "set", "type": "route", "prefix": "5.3.0.0/24", "nexthop_group": "CYGNUS_NHG_1" } """ prefix = eossdk.IpPrefix(str(prefix)) route_key = eossdk.IpRouteKey(prefix) route = eossdk.IpRoute(route_key) via = eossdk.IpRouteVia(route_key) via.nexthop_group_is(str(nexthop_group)) self.ip_route_mgr.ip_route_set(route) self.ip_route_mgr.ip_route_via_set(via)
def _del_route(self, prefix, nexthop_group=None): """ { "command": "del", "type": "route", "prefix": "5.3.0.0/24", "nexthop_group": "CYGNUS_NHG_1" // optional } """ prefix = eossdk.IpPrefix(str(prefix)) route_key = eossdk.IpRouteKey(prefix) route = eossdk.IpRoute(route_key) if nexthop_group: via = eossdk.IpRouteVia(route_key) via.nexthop_group_is(str(nexthop_group)) self.ip_route_mgr.ip_route_via_del(via) else: self.ip_route_mgr.ip_route_del(route_key)
def insert_v6_routes(self, start, end, newApi): self.tracer.trace1("Starting to insert {} v6_routes, \ starting at route# {}".format(end, start)) for i in range(start, end): first = (i / 65536) % 65536 second = i % 65536 addrStr = "%04x:%04x::" % (first, second) ip = eossdk.IpAddr(addrStr) prefix6 = eossdk.IpPrefix(ip, 64) rkey6 = eossdk.IpRouteKey(prefix6) route6 = eossdk.IpRoute(rkey6) route6.tag_is(self.tag) via6 = eossdk.IpRouteVia(rkey6) via6.nexthop_group_is("mpls_nhg") if not newApi: self.ipMgr.ip_route_set(route6) else: self.ipMgr.ip_route_set(route6, eossdk.IP_ROUTE_ACTION_NEXTHOP_GROUP) self.ipMgr.ip_route_via_set(via6) self.tracer.trace1("Finished inserting {} routes, \ starting at route# {}".format(end, start))