equal
deleted
inserted
replaced
|
1 This fix is from work in progress by the Quagga community Solaris maintainer. |
|
2 It does not have a specific bug but will eventually be incorporated in the |
|
3 main branch. |
|
4 |
|
5 *** lib/if.c |
|
6 --- lib/if.c |
|
7 *************** if_is_running (struct interface *ifp) |
|
8 *** 341,346 **** |
|
9 --- 341,361 ---- |
|
10 int |
|
11 if_is_operative (struct interface *ifp) |
|
12 { |
|
13 + #ifdef SUNOS_5 |
|
14 + /* Administrators on Solaris can set IFF_NORTEXCH on interfaces to |
|
15 + * indicate they should not be touched by routing protocols. This can be |
|
16 + * configured with, e.g. |
|
17 + * |
|
18 + * ipadm set-ifprop -p exchange_route=off |
|
19 + * |
|
20 + * Honour this by simply considering IFF_NORTEXCH interfaces as |
|
21 + * inoperative for general purposes of Quagga code. zebra will withdraw |
|
22 + * interface/addresses that go IFF_NORTEXCH from Quagga clients. |
|
23 + */ |
|
24 + if (ifp->flags & IFF_NORTEXCH) |
|
25 + return 0; |
|
26 + #endif /* SUNOS_5 */ |
|
27 + |
|
28 return ((ifp->flags & IFF_UP) && |
|
29 (ifp->flags & IFF_RUNNING || !CHECK_FLAG(ifp->status, ZEBRA_INTERFACE_LINKDETECTION))); |
|
30 } |