diff options
author | Ondrej Zajicek <santiago@crfreenet.org> | 2013-09-10 13:01:22 +0200 |
---|---|---|
committer | Ondrej Zajicek <santiago@crfreenet.org> | 2013-09-10 13:01:22 +0200 |
commit | 2a0130f94d2304e316f0ffad8e52fce094559782 (patch) | |
tree | 15562d887aed4b7aa2ffb2da6f65ea6d22c6a30c /sysdep | |
parent | 507e182a60c3704f8a28a0450f1affc2c7c1b66a (diff) |
Fixes a bug in kernel extended attribute processing.
The bug caused that krt_prefsrc attribute was not processed when a route
received from a kernel protocol was exported to another kernel protocol.
Thanks to Sergey Popovich for a bugreport.
Diffstat (limited to 'sysdep')
-rw-r--r-- | sysdep/unix/krt.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/sysdep/unix/krt.c b/sysdep/unix/krt.c index 54297921..6de6077e 100644 --- a/sysdep/unix/krt.c +++ b/sysdep/unix/krt.c @@ -730,6 +730,13 @@ krt_prune(struct krt_proto *p) /* Route rejected, should not happen (KRF_INSTALLED) but to be sure .. */ verdict = (verdict == KRF_CREATE) ? KRF_IGNORE : KRF_DELETE; } + else + { + ea_list **x = &tmpa; + while (*x) + x = &((*x)->next); + *x = new ? new->attrs->eattrs : NULL; + } } switch (verdict) |