diff options
| author | Tony Luck <tony.luck@intel.com> | 2005-06-29 18:21:41 -0400 | 
|---|---|---|
| committer | Tony Luck <tony.luck@intel.com> | 2005-06-29 18:21:41 -0400 | 
| commit | d18bfacff20f08aecf01bb971b110ca108eef3c7 (patch) | |
| tree | 255f862839c593c796e609328575b611e3f56cf3 /net/ipv4/ipmr.c | |
| parent | a68db763af9b676590c3fe9ec3f17bf18015eb2f (diff) | |
| parent | fd782a4a99d2d3e818b9465c427b10f7f027d7da (diff) | |
Auto merge with /home/aegl/GIT/linus
Diffstat (limited to 'net/ipv4/ipmr.c')
| -rw-r--r-- | net/ipv4/ipmr.c | 10 | 
1 files changed, 8 insertions, 2 deletions
diff --git a/net/ipv4/ipmr.c b/net/ipv4/ipmr.c index e4f809a93f47..7833d920bdba 100644 --- a/net/ipv4/ipmr.c +++ b/net/ipv4/ipmr.c  | |||
| @@ -297,6 +297,7 @@ static int vif_delete(int vifi) | |||
| 297 | static void ipmr_destroy_unres(struct mfc_cache *c) | 297 | static void ipmr_destroy_unres(struct mfc_cache *c) | 
| 298 | { | 298 | { | 
| 299 | struct sk_buff *skb; | 299 | struct sk_buff *skb; | 
| 300 | struct nlmsgerr *e; | ||
| 300 | 301 | ||
| 301 | atomic_dec(&cache_resolve_queue_len); | 302 | atomic_dec(&cache_resolve_queue_len); | 
| 302 | 303 | ||
| @@ -306,7 +307,9 @@ static void ipmr_destroy_unres(struct mfc_cache *c) | |||
| 306 | nlh->nlmsg_type = NLMSG_ERROR; | 307 | nlh->nlmsg_type = NLMSG_ERROR; | 
| 307 | nlh->nlmsg_len = NLMSG_LENGTH(sizeof(struct nlmsgerr)); | 308 | nlh->nlmsg_len = NLMSG_LENGTH(sizeof(struct nlmsgerr)); | 
| 308 | skb_trim(skb, nlh->nlmsg_len); | 309 | skb_trim(skb, nlh->nlmsg_len); | 
| 309 | ((struct nlmsgerr*)NLMSG_DATA(nlh))->error = -ETIMEDOUT; | 310 | e = NLMSG_DATA(nlh); | 
| 311 | e->error = -ETIMEDOUT; | ||
| 312 | memset(&e->msg, 0, sizeof(e->msg)); | ||
| 310 | netlink_unicast(rtnl, skb, NETLINK_CB(skb).dst_pid, MSG_DONTWAIT); | 313 | netlink_unicast(rtnl, skb, NETLINK_CB(skb).dst_pid, MSG_DONTWAIT); | 
| 311 | } else | 314 | } else | 
| 312 | kfree_skb(skb); | 315 | kfree_skb(skb); | 
| @@ -499,6 +502,7 @@ static struct mfc_cache *ipmr_cache_alloc_unres(void) | |||
| 499 | static void ipmr_cache_resolve(struct mfc_cache *uc, struct mfc_cache *c) | 502 | static void ipmr_cache_resolve(struct mfc_cache *uc, struct mfc_cache *c) | 
| 500 | { | 503 | { | 
| 501 | struct sk_buff *skb; | 504 | struct sk_buff *skb; | 
| 505 | struct nlmsgerr *e; | ||
| 502 | 506 | ||
| 503 | /* | 507 | /* | 
| 504 | * Play the pending entries through our router | 508 | * Play the pending entries through our router | 
| @@ -515,7 +519,9 @@ static void ipmr_cache_resolve(struct mfc_cache *uc, struct mfc_cache *c) | |||
| 515 | nlh->nlmsg_type = NLMSG_ERROR; | 519 | nlh->nlmsg_type = NLMSG_ERROR; | 
| 516 | nlh->nlmsg_len = NLMSG_LENGTH(sizeof(struct nlmsgerr)); | 520 | nlh->nlmsg_len = NLMSG_LENGTH(sizeof(struct nlmsgerr)); | 
| 517 | skb_trim(skb, nlh->nlmsg_len); | 521 | skb_trim(skb, nlh->nlmsg_len); | 
| 518 | ((struct nlmsgerr*)NLMSG_DATA(nlh))->error = -EMSGSIZE; | 522 | e = NLMSG_DATA(nlh); | 
| 523 | e->error = -EMSGSIZE; | ||
| 524 | memset(&e->msg, 0, sizeof(e->msg)); | ||
| 519 | } | 525 | } | 
| 520 | err = netlink_unicast(rtnl, skb, NETLINK_CB(skb).dst_pid, MSG_DONTWAIT); | 526 | err = netlink_unicast(rtnl, skb, NETLINK_CB(skb).dst_pid, MSG_DONTWAIT); | 
| 521 | } else | 527 | } else | 
