diff options
| author | Linus Torvalds <torvalds@g5.osdl.org> | 2006-06-19 21:55:56 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-06-19 21:55:56 -0400 |
| commit | d0b952a9837f81cd89e756b1b34293fa6e1cb59d (patch) | |
| tree | fbe488bc5f407afa0e91cefb262d9e9ee69062ac /net/ipv6/addrconf.c | |
| parent | d90125bfe958ed0451c6b98f831c86aba08b43d5 (diff) | |
| parent | 47552c4e555eefe381f3d45140b59a2ea4b16486 (diff) | |
Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6: (109 commits)
[ETHTOOL]: Fix UFO typo
[SCTP]: Fix persistent slowdown in sctp when a gap ack consumes rx buffer.
[SCTP]: Send only 1 window update SACK per message.
[SCTP]: Don't do CRC32C checksum over loopback.
[SCTP] Reset rtt_in_progress for the chunk when processing its sack.
[SCTP]: Reject sctp packets with broadcast addresses.
[SCTP]: Limit association max_retrans setting in setsockopt.
[PFKEYV2]: Fix inconsistent typing in struct sadb_x_kmprivate.
[IPV6]: Sum real space for RTAs.
[IRDA]: Use put_unaligned() in irlmp_do_discovery().
[BRIDGE]: Add support for NETIF_F_HW_CSUM devices
[NET]: Add NETIF_F_GEN_CSUM and NETIF_F_ALL_CSUM
[TG3]: Convert to non-LLTX
[TG3]: Remove unnecessary tx_lock
[TCP]: Add tcp_slow_start_after_idle sysctl.
[BNX2]: Update version and reldate
[BNX2]: Use CPU native page size
[BNX2]: Use compressed firmware
[BNX2]: Add firmware decompression
[BNX2]: Allow WoL settings on new 5708 chips
...
Manual fixup for conflict in drivers/net/tulip/winbond-840.c
Diffstat (limited to 'net/ipv6/addrconf.c')
| -rw-r--r-- | net/ipv6/addrconf.c | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index 445006ee4522..c2c26fa0943d 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c | |||
| @@ -2860,6 +2860,11 @@ inet6_rtm_newaddr(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg) | |||
| 2860 | return inet6_addr_add(ifm->ifa_index, pfx, ifm->ifa_prefixlen); | 2860 | return inet6_addr_add(ifm->ifa_index, pfx, ifm->ifa_prefixlen); |
| 2861 | } | 2861 | } |
| 2862 | 2862 | ||
| 2863 | /* Maximum length of ifa_cacheinfo attributes */ | ||
| 2864 | #define INET6_IFADDR_RTA_SPACE \ | ||
| 2865 | RTA_SPACE(16) /* IFA_ADDRESS */ + \ | ||
| 2866 | RTA_SPACE(sizeof(struct ifa_cacheinfo)) /* CACHEINFO */ | ||
| 2867 | |||
| 2863 | static int inet6_fill_ifaddr(struct sk_buff *skb, struct inet6_ifaddr *ifa, | 2868 | static int inet6_fill_ifaddr(struct sk_buff *skb, struct inet6_ifaddr *ifa, |
| 2864 | u32 pid, u32 seq, int event, unsigned int flags) | 2869 | u32 pid, u32 seq, int event, unsigned int flags) |
| 2865 | { | 2870 | { |
| @@ -3092,7 +3097,7 @@ static int inet6_dump_ifacaddr(struct sk_buff *skb, struct netlink_callback *cb) | |||
| 3092 | static void inet6_ifa_notify(int event, struct inet6_ifaddr *ifa) | 3097 | static void inet6_ifa_notify(int event, struct inet6_ifaddr *ifa) |
| 3093 | { | 3098 | { |
| 3094 | struct sk_buff *skb; | 3099 | struct sk_buff *skb; |
| 3095 | int size = NLMSG_SPACE(sizeof(struct ifaddrmsg)+128); | 3100 | int size = NLMSG_SPACE(sizeof(struct ifaddrmsg) + INET6_IFADDR_RTA_SPACE); |
| 3096 | 3101 | ||
| 3097 | skb = alloc_skb(size, GFP_ATOMIC); | 3102 | skb = alloc_skb(size, GFP_ATOMIC); |
| 3098 | if (!skb) { | 3103 | if (!skb) { |
| @@ -3142,6 +3147,17 @@ static void inline ipv6_store_devconf(struct ipv6_devconf *cnf, | |||
| 3142 | #endif | 3147 | #endif |
| 3143 | } | 3148 | } |
| 3144 | 3149 | ||
| 3150 | /* Maximum length of ifinfomsg attributes */ | ||
| 3151 | #define INET6_IFINFO_RTA_SPACE \ | ||
| 3152 | RTA_SPACE(IFNAMSIZ) /* IFNAME */ + \ | ||
| 3153 | RTA_SPACE(MAX_ADDR_LEN) /* ADDRESS */ + \ | ||
| 3154 | RTA_SPACE(sizeof(u32)) /* MTU */ + \ | ||
| 3155 | RTA_SPACE(sizeof(int)) /* LINK */ + \ | ||
| 3156 | RTA_SPACE(0) /* PROTINFO */ + \ | ||
| 3157 | RTA_SPACE(sizeof(u32)) /* FLAGS */ + \ | ||
| 3158 | RTA_SPACE(sizeof(struct ifla_cacheinfo)) /* CACHEINFO */ + \ | ||
| 3159 | RTA_SPACE(sizeof(__s32[DEVCONF_MAX])) /* CONF */ | ||
| 3160 | |||
| 3145 | static int inet6_fill_ifinfo(struct sk_buff *skb, struct inet6_dev *idev, | 3161 | static int inet6_fill_ifinfo(struct sk_buff *skb, struct inet6_dev *idev, |
| 3146 | u32 pid, u32 seq, int event, unsigned int flags) | 3162 | u32 pid, u32 seq, int event, unsigned int flags) |
| 3147 | { | 3163 | { |
| @@ -3235,8 +3251,7 @@ static int inet6_dump_ifinfo(struct sk_buff *skb, struct netlink_callback *cb) | |||
| 3235 | void inet6_ifinfo_notify(int event, struct inet6_dev *idev) | 3251 | void inet6_ifinfo_notify(int event, struct inet6_dev *idev) |
| 3236 | { | 3252 | { |
| 3237 | struct sk_buff *skb; | 3253 | struct sk_buff *skb; |
| 3238 | /* 128 bytes ?? */ | 3254 | int size = NLMSG_SPACE(sizeof(struct ifinfomsg) + INET6_IFINFO_RTA_SPACE); |
| 3239 | int size = NLMSG_SPACE(sizeof(struct ifinfomsg)+128); | ||
| 3240 | 3255 | ||
| 3241 | skb = alloc_skb(size, GFP_ATOMIC); | 3256 | skb = alloc_skb(size, GFP_ATOMIC); |
| 3242 | if (!skb) { | 3257 | if (!skb) { |
| @@ -3252,6 +3267,11 @@ void inet6_ifinfo_notify(int event, struct inet6_dev *idev) | |||
| 3252 | netlink_broadcast(rtnl, skb, 0, RTNLGRP_IPV6_IFINFO, GFP_ATOMIC); | 3267 | netlink_broadcast(rtnl, skb, 0, RTNLGRP_IPV6_IFINFO, GFP_ATOMIC); |
| 3253 | } | 3268 | } |
| 3254 | 3269 | ||
| 3270 | /* Maximum length of prefix_cacheinfo attributes */ | ||
| 3271 | #define INET6_PREFIX_RTA_SPACE \ | ||
| 3272 | RTA_SPACE(sizeof(((struct prefix_info *)NULL)->prefix)) /* ADDRESS */ + \ | ||
| 3273 | RTA_SPACE(sizeof(struct prefix_cacheinfo)) /* CACHEINFO */ | ||
| 3274 | |||
| 3255 | static int inet6_fill_prefix(struct sk_buff *skb, struct inet6_dev *idev, | 3275 | static int inet6_fill_prefix(struct sk_buff *skb, struct inet6_dev *idev, |
| 3256 | struct prefix_info *pinfo, u32 pid, u32 seq, | 3276 | struct prefix_info *pinfo, u32 pid, u32 seq, |
| 3257 | int event, unsigned int flags) | 3277 | int event, unsigned int flags) |
| @@ -3296,7 +3316,7 @@ static void inet6_prefix_notify(int event, struct inet6_dev *idev, | |||
| 3296 | struct prefix_info *pinfo) | 3316 | struct prefix_info *pinfo) |
| 3297 | { | 3317 | { |
| 3298 | struct sk_buff *skb; | 3318 | struct sk_buff *skb; |
| 3299 | int size = NLMSG_SPACE(sizeof(struct prefixmsg)+128); | 3319 | int size = NLMSG_SPACE(sizeof(struct prefixmsg) + INET6_PREFIX_RTA_SPACE); |
| 3300 | 3320 | ||
| 3301 | skb = alloc_skb(size, GFP_ATOMIC); | 3321 | skb = alloc_skb(size, GFP_ATOMIC); |
| 3302 | if (!skb) { | 3322 | if (!skb) { |
