@@ -15,6 +15,7 @@ type Route struct {
15
15
Proto string
16
16
Family string
17
17
Via string
18
+ VRF string
18
19
}
19
20
20
21
// Add adds new route.
@@ -37,6 +38,10 @@ func (r *Route) Add() error {
37
38
cmd = append (cmd , "proto" , r .Proto )
38
39
}
39
40
41
+ if r .VRF != "" {
42
+ cmd = append (cmd , "vrf" , r .VRF )
43
+ }
44
+
40
45
_ , err := subprocess .RunCommand ("ip" , cmd ... )
41
46
if err != nil {
42
47
return err
@@ -47,7 +52,15 @@ func (r *Route) Add() error {
47
52
48
53
// Delete deletes routing table.
49
54
func (r * Route ) Delete () error {
50
- _ , err := subprocess .RunCommand ("ip" , r .Family , "route" , "delete" , "table" , r .Table , r .Route , "dev" , r .DevName )
55
+ cmd := []string {r .Family , "route" , "delete" , r .Route , "dev" , r .DevName }
56
+
57
+ if r .VRF != "" {
58
+ cmd = append (cmd , "vrf" , r .VRF )
59
+ } else if r .Table != "" {
60
+ cmd = append (cmd , "table" , r .Table )
61
+ }
62
+
63
+ _ , err := subprocess .RunCommand ("ip" , cmd ... )
51
64
if err != nil {
52
65
return err
53
66
}
@@ -76,6 +89,10 @@ func (r *Route) Flush() error {
76
89
cmd = append (cmd , "proto" , r .Proto )
77
90
}
78
91
92
+ if r .VRF != "" {
93
+ cmd = append (cmd , "vrf" , r .VRF )
94
+ }
95
+
79
96
_ , err := subprocess .RunCommand ("ip" , cmd ... )
80
97
if err != nil {
81
98
return err
@@ -87,6 +104,11 @@ func (r *Route) Flush() error {
87
104
// Replace changes or adds new route.
88
105
func (r * Route ) Replace (routes []string ) error {
89
106
cmd := []string {r .Family , "route" , "replace" , "dev" , r .DevName , "proto" , r .Proto }
107
+
108
+ if r .VRF != "" {
109
+ cmd = append (cmd , "vrf" , r .VRF )
110
+ }
111
+
90
112
cmd = append (cmd , routes ... )
91
113
_ , err := subprocess .RunCommand ("ip" , cmd ... )
92
114
if err != nil {
@@ -99,7 +121,14 @@ func (r *Route) Replace(routes []string) error {
99
121
// Show lists routes.
100
122
func (r * Route ) Show () ([]string , error ) {
101
123
routes := []string {}
102
- out , err := subprocess .RunCommand ("ip" , r .Family , "route" , "show" , "dev" , r .DevName , "proto" , r .Proto )
124
+
125
+ cmd := []string {r .Family , "route" , "show" , "dev" , r .DevName , "proto" , r .Proto }
126
+
127
+ if r .VRF != "" {
128
+ cmd = append (cmd , "vrf" , r .VRF )
129
+ }
130
+
131
+ out , err := subprocess .RunCommand ("ip" , cmd ... )
103
132
if err != nil {
104
133
return routes , err
105
134
}
0 commit comments