@@ -77,6 +77,80 @@ func TestRouteAddDel(t *testing.T) {
7777 t .Fatal ("Route not removed properly" )
7878 }
7979
80+ // add default route test
81+ // equiv: default dev lo
82+ _ , defaultDst , _ := net .ParseCIDR ("0.0.0.0/0" )
83+ route = Route {Dst : defaultDst , LinkIndex : link .Attrs ().Index }
84+ if err := RouteAdd (& route ); err != nil {
85+ t .Fatal (err )
86+ }
87+ routes , err = RouteList (link , FAMILY_V4 )
88+ if err != nil {
89+ t .Fatal (err )
90+ }
91+ if len (routes ) != 1 {
92+ t .Fatal ("Dev default route not listed properly" )
93+ }
94+ if err := RouteDel (& routes [0 ]); err != nil {
95+ t .Fatal (err )
96+ }
97+ routes , err = RouteList (link , FAMILY_V4 )
98+ if err != nil {
99+ t .Fatal (err )
100+ }
101+ if len (routes ) != 0 {
102+ t .Fatal ("Dev default route not removed properly" )
103+ }
104+
105+ // equiv: blackhole default
106+ route = Route {Dst : defaultDst , Type : unix .RTN_BLACKHOLE , Family : FAMILY_V4 }
107+ if err := RouteAdd (& route ); err != nil {
108+ t .Fatal (err )
109+ }
110+ routes , err = RouteList (nil , FAMILY_V4 )
111+ if err != nil {
112+ t .Fatal (err )
113+ }
114+ t .Logf ("%+v" , routes )
115+
116+ if len (routes ) != 1 {
117+ t .Fatal ("Blackhole default route not listed properly" )
118+ }
119+
120+ if err := RouteDel (& routes [0 ]); err != nil {
121+ t .Fatal (err )
122+ }
123+ routes , err = RouteList (nil , FAMILY_V4 )
124+ if err != nil {
125+ t .Fatal (err )
126+ }
127+ if len (routes ) != 0 {
128+ t .Fatal ("Blackhole default route not removed properly" )
129+ }
130+
131+ // equiv: prohibit default
132+ route = Route {Dst : defaultDst , Type : unix .RTN_PROHIBIT }
133+ if err := RouteAdd (& route ); err != nil {
134+ t .Fatal (err )
135+ }
136+ routes , err = RouteList (nil , FAMILY_V4 )
137+ if err != nil {
138+ t .Fatal (err )
139+ }
140+ if len (routes ) != 1 {
141+ t .Fatal ("Prohibit default route not listed properly" )
142+ }
143+
144+ if err := RouteDel (& routes [0 ]); err != nil {
145+ t .Fatal (err )
146+ }
147+ routes , err = RouteList (nil , FAMILY_V4 )
148+ if err != nil {
149+ t .Fatal (err )
150+ }
151+ if len (routes ) != 0 {
152+ t .Fatal ("Prohibit default route not removed properly" )
153+ }
80154}
81155
82156func TestRoute6AddDel (t * testing.T ) {
@@ -135,7 +209,7 @@ func TestRoute6AddDel(t *testing.T) {
135209 t .Fatal (err )
136210 }
137211
138- // cleanup route and dummy interface created for the test
212+ // cleanup route
139213 if len (routeToDstIP ) == 0 {
140214 t .Fatal ("Route not present" )
141215 }
@@ -149,6 +223,108 @@ func TestRoute6AddDel(t *testing.T) {
149223 if len (routes ) != nroutes {
150224 t .Fatal ("Route not removed properly" )
151225 }
226+
227+ // add a default link route
228+ _ , defaultDst , _ := net .ParseCIDR ("::/0" )
229+ route = Route {LinkIndex : link .Attrs ().Index , Dst : defaultDst }
230+ if err := RouteAdd (& route ); err != nil {
231+ t .Fatal (err )
232+ }
233+ routes , err = RouteList (link , FAMILY_V6 )
234+ if err != nil {
235+ t .Fatal (err )
236+ }
237+ if len (routes ) != nroutes + 1 {
238+ t .Fatal ("Default route not added properly" )
239+ }
240+
241+ // add a default link route
242+ for _ , route := range routes {
243+ if route .Dst .String () == defaultDst .String () {
244+ if err := RouteDel (& route ); err != nil {
245+ t .Fatal (err )
246+ }
247+ }
248+ }
249+ routes , err = RouteList (link , FAMILY_V6 )
250+ if err != nil {
251+ t .Fatal (err )
252+ }
253+ if len (routes ) != nroutes {
254+ t .Fatal ("Default route not removed properly" )
255+ }
256+
257+ // add blackhole default link route
258+ routes , err = RouteList (nil , FAMILY_V6 )
259+ if err != nil {
260+ t .Fatal (err )
261+ }
262+ nroutes = len (routes )
263+
264+ route = Route {Type : unix .RTN_BLACKHOLE , Dst : defaultDst }
265+ if err := RouteAdd (& route ); err != nil {
266+ t .Fatal (err )
267+ }
268+ routes , err = RouteList (nil , FAMILY_V6 )
269+ if err != nil {
270+ t .Fatal (err )
271+ }
272+ if len (routes ) != nroutes + 1 {
273+ t .Fatal ("Blackhole default route not added properly" )
274+ }
275+
276+ // add blackhole default link route
277+ for _ , route := range routes {
278+ if ipNetEqual (route .Dst , defaultDst ) {
279+ if err := RouteDel (& route ); err != nil {
280+ t .Fatal (err )
281+ }
282+ }
283+ }
284+ routes , err = RouteList (nil , FAMILY_V6 )
285+ if err != nil {
286+ t .Fatal (err )
287+ }
288+ if len (routes ) != nroutes {
289+ t .Fatal ("Blackhole default route not removed properly" )
290+ }
291+
292+ // add prohibit default link route
293+ routes , err = RouteList (nil , FAMILY_V6 )
294+ if err != nil {
295+ t .Fatal (err )
296+ }
297+ nroutes = len (routes )
298+
299+ route = Route {Type : unix .RTN_BLACKHOLE , Dst : defaultDst }
300+ if err := RouteAdd (& route ); err != nil {
301+ t .Fatal (err )
302+ }
303+ routes , err = RouteList (nil , FAMILY_V6 )
304+ if err != nil {
305+ t .Fatal (err )
306+ }
307+ if len (routes ) != nroutes + 1 {
308+ t .Fatal ("Prohibit default route not added properly" )
309+ }
310+
311+ // add prohibit default link route
312+ for _ , route := range routes {
313+ if ipNetEqual (route .Dst , defaultDst ) {
314+ if err := RouteDel (& route ); err != nil {
315+ t .Fatal (err )
316+ }
317+ }
318+ }
319+ routes , err = RouteList (nil , FAMILY_V6 )
320+ if err != nil {
321+ t .Fatal (err )
322+ }
323+ if len (routes ) != nroutes {
324+ t .Fatal ("Prohibit default route not removed properly" )
325+ }
326+
327+ // cleanup dummy interface created for the test
152328 if err := LinkDel (link ); err != nil {
153329 t .Fatal (err )
154330 }
0 commit comments