def route_add(self, node, nh, mac): log.info('Adding route for %s' % node) nh = nh if nh else None mac = mac if mac else None if nh is None and mac is None: log.error('No next hop or dev') return [False, 'No next hop or dev'] if not node: log.error('Node is empty') return [False, 'Node is empty'] if node == 'default': node = '0.0.0.0/0' if not UO.validate_node(node): log.error('Node %s is invalid' % node) return [False, 'Node %s is invalid' % node] if UO.check_node_existance(node): log.error('Node %s is duplicated' % node) return [False, 'Node %s is duplicated' % node] if mac is not None: dev = UO.get_name_by_mac(mac) if dev is None: log.error('Device %s is invalid' % mac) return [False, 'Device %s is invalid' % mac] else: dev = None if nh is not None and not UO.validate_ip(nh + '/32'): log.error('Next hop %s is invalid' % nh) return [False, 'Next hop %s is invalid' % nh] if not UO.add_route(node, nh, mac): log.error('Add route for %s error' % node) return [False, 'Add route for %s error' % node] if node == '0.0.0.0/0': UO.write_default_route_config(nh) Config.add_route(node, nh, mac) return [True, '']
def route_del(self, node): log.info('Deleting route for %s' % node) if not node: log.error('Node is empty') return [False, 'Node is empty'] if node == 'default': node = '0.0.0.0/0' if not UO.validate_node(node): log.error('Node %s is invalid' % node) return [False, 'Node %s is invalid' % node] if not UO.check_node_existance(node): log.error('Node %s not exist' % node) return [False, 'Node %s not exist' % node] if not UO.del_route(node): log.error('Delete route error') return [False, 'Delete route error'] if node == '0.0.0.0/0': UO.remove_default_route_config() Config.del_route(node) return [True, '']