summaryrefslogtreecommitdiff
path: root/vyroute/basic_function/BGPRoute.py
blob: bcb891d797ec5a637612e90a0741efd0d569357f (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
102
# Copyright (c) 2016 Hochikong
def bgp_as(obj, self_as, neighbor, multihop, remote_as, update_source):
    """VyOS BGP router basic setting about AS

    :param obj: A connection object
    :param self_as: The AS number of the router you login
    :param neighbor: The neighbor router address
    :param multihop: The amount of hops
    :param remote_as: The remote AS number
    :param update_source: The update source
    :return: A message
    """
    bgp_multihop_configuration = "set protocols bgp %s neighbor %s ebgp-multihop %s"
    bgp_remote_as_configuration = "set protocols bgp %s neighbor %s remote-as %s"
    bgp_update_source_configuration = "set protocols bgp %s neighbor %s update-source %s"

    try:
        reg = 0
        error_message = []
        obj.sendline(bgp_multihop_configuration % (self_as, neighbor, multihop))
        obj.prompt()
        if len(obj.before) > obj.before.index('\r\n') + 2:
            error_message.append(obj.before)
            reg += 1
        obj.sendline(bgp_remote_as_configuration % (self_as, neighbor, remote_as))
        obj.prompt()
        if len(obj.before) > obj.before.index('\r\n') + 2:
            error_message.append(obj.before)
            reg += 1
        obj.sendline(bgp_update_source_configuration % (self_as, neighbor, update_source))
        obj.prompt()
        if len(obj.before) > obj.before.index('\r\n') + 2:
            error_message.append(obj.before)
            reg += 1
        if reg > 0:
            return error_message
        else:
            return "Result:Configured successfully"
    except Exception as e:
        return e


def bgp_network(obj, self_as, network_range):
    """Add a network to BGP router

    :param obj: A connection object
    :param self_as: The AS number of the router you login
    :param network_range: The target network,don't forget the netmask
    :return: A message
    """
    bgp_network_configuration = "set protocols bgp %s network %s"

    try:
        obj.sendline(bgp_network_configuration % (self_as, network_range))
        obj.prompt()
        if len(obj.before) > obj.before.index('\r\n') + 2:
            return obj.before
        else:
            return "Result:Configured successfully"
    except Exception as e:
        return e


def bgp_router_id(obj, self_as, router_id):
    """Set a router id for the router you login

    :param obj:A connection object
    :param self_as: The AS number of the router you login
    :param router_id: The router id,or you can use the router address as router id
    :return: A message
    """
    bgp_router_id_configuration = "set protocols bgp %s parameters router-id %s"

    try:
        obj.sendline(bgp_router_id_configuration % (self_as, router_id))
        obj.prompt()
        if len(obj.before) > obj.before.index('\r\n') + 2:
            return obj.before
        else:
            return "Result:Configured successfully"
    except Exception as e:
        return e


def bgp_blackhole_route(obj, network_range):
    """Set a blackhole route

    :param obj: A connection object
    :param network_range: The target network,don't forget the netmask
    :return: A message
    """
    bgp_blackhole_configuration = "set protocols static route %s blackhole distance '254' "

    try:
        obj.sendline(bgp_blackhole_configuration % network_range)
        obj.prompt()
        if len(obj.before) > obj.before.index('\r\n') + 2:
            return obj.before
        else:
            return "Result:Configured successfully"
    except Exception as e:
        return e