Commit 2a044515 authored by David S. Miller's avatar David S. Miller

Merge davem@outer-richmond.davemloft.net:src/GIT/net-2.6/

parents 2625c1be e6df439b
...@@ -198,27 +198,43 @@ struct in6_flowlabel_req ...@@ -198,27 +198,43 @@ struct in6_flowlabel_req
* MCAST_MSFILTER 48 * MCAST_MSFILTER 48
*/ */
/* RFC3542 advanced socket options (50-67) */ /*
#define IPV6_RECVPKTINFO 50 * Advanced API (RFC3542) (1)
#define IPV6_PKTINFO 51 *
#if 0 * Note: IPV6_RECVRTHDRDSTOPTS does not exist. see net/ipv6/datagram.c.
#define IPV6_RECVPATHMTU 52 */
#define IPV6_PATHMTU 53
#define IPV6_DONTFRAG 54 #define IPV6_RECVPKTINFO 49
#define IPV6_USE_MIN_MTU 55 #define IPV6_PKTINFO 50
#endif #define IPV6_RECVHOPLIMIT 51
#define IPV6_RECVHOPOPTS 56 #define IPV6_HOPLIMIT 52
#define IPV6_HOPOPTS 57 #define IPV6_RECVHOPOPTS 53
#if 0 #define IPV6_HOPOPTS 54
#define IPV6_RECVRTHDRDSTOPTS 58 /* Unused, see net/ipv6/datagram.c */ #define IPV6_RTHDRDSTOPTS 55
#define IPV6_RECVRTHDR 56
#define IPV6_RTHDR 57
#define IPV6_RECVDSTOPTS 58
#define IPV6_DSTOPTS 59
#if 0 /* not yet */
#define IPV6_RECVPATHMTU 60
#define IPV6_PATHMTU 61
#define IPV6_DONTFRAG 62
#define IPV6_USE_MIN_MTU 63
#endif #endif
#define IPV6_RTHDRDSTOPTS 59
#define IPV6_RECVRTHDR 60 /*
#define IPV6_RTHDR 61 * Netfilter
#define IPV6_RECVDSTOPTS 62 *
#define IPV6_DSTOPTS 63 * Following socket options are used in ip6_tables;
#define IPV6_RECVHOPLIMIT 64 * see include/linux/netfilter_ipv6/ip6_tables.h.
#define IPV6_HOPLIMIT 65 *
* IP6T_SO_SET_REPLACE / IP6T_SO_GET_INFO 64
* IP6T_SO_SET_ADD_COUNTERS / IP6T_SO_GET_ENTRIES 65
*/
/*
* Advanced API (RFC3542) (2)
*/
#define IPV6_RECVTCLASS 66 #define IPV6_RECVTCLASS 66
#define IPV6_TCLASS 67 #define IPV6_TCLASS 67
......
...@@ -68,7 +68,7 @@ struct ipv6_opt_hdr { ...@@ -68,7 +68,7 @@ struct ipv6_opt_hdr {
struct rt0_hdr { struct rt0_hdr {
struct ipv6_rt_hdr rt_hdr; struct ipv6_rt_hdr rt_hdr;
__u32 bitmap; /* strict/loose bit map */ __u32 reserved;
struct in6_addr addr[0]; struct in6_addr addr[0];
#define rt0_type rt_hdr.type #define rt0_type rt_hdr.type
......
This diff is collapsed.
...@@ -48,6 +48,8 @@ ...@@ -48,6 +48,8 @@
/* Two seconds as per CCID3 spec */ /* Two seconds as per CCID3 spec */
#define TFRC_INITIAL_TIMEOUT (2 * USEC_PER_SEC) #define TFRC_INITIAL_TIMEOUT (2 * USEC_PER_SEC)
#define TFRC_INITIAL_IPI (USEC_PER_SEC / 4)
/* In usecs - half the scheduling granularity as per RFC3448 4.6 */ /* In usecs - half the scheduling granularity as per RFC3448 4.6 */
#define TFRC_OPSYS_HALF_TIME_GRAN (USEC_PER_SEC / (2 * HZ)) #define TFRC_OPSYS_HALF_TIME_GRAN (USEC_PER_SEC / (2 * HZ))
......
...@@ -641,16 +641,12 @@ int dccp_v4_send_reset(struct sock *sk, enum dccp_reset_codes code) ...@@ -641,16 +641,12 @@ int dccp_v4_send_reset(struct sock *sk, enum dccp_reset_codes code)
skb = dccp_make_reset(sk, sk->sk_dst_cache, code); skb = dccp_make_reset(sk, sk->sk_dst_cache, code);
if (skb != NULL) { if (skb != NULL) {
const struct dccp_sock *dp = dccp_sk(sk);
const struct inet_sock *inet = inet_sk(sk); const struct inet_sock *inet = inet_sk(sk);
err = ip_build_and_send_pkt(skb, sk, err = ip_build_and_send_pkt(skb, sk,
inet->saddr, inet->daddr, NULL); inet->saddr, inet->daddr, NULL);
if (err == NET_XMIT_CN) if (err == NET_XMIT_CN)
err = 0; err = 0;
ccid_hc_rx_exit(dp->dccps_hc_rx_ccid, sk);
ccid_hc_tx_exit(dp->dccps_hc_tx_ccid, sk);
} }
return err; return err;
......
...@@ -522,7 +522,4 @@ void dccp_send_close(struct sock *sk, const int active) ...@@ -522,7 +522,4 @@ void dccp_send_close(struct sock *sk, const int active)
dccp_transmit_skb(sk, skb_clone(skb, prio)); dccp_transmit_skb(sk, skb_clone(skb, prio));
} else } else
dccp_transmit_skb(sk, skb); dccp_transmit_skb(sk, skb);
ccid_hc_rx_exit(dp->dccps_hc_rx_ccid, sk);
ccid_hc_tx_exit(dp->dccps_hc_tx_ccid, sk);
} }
...@@ -406,8 +406,7 @@ ipv6_invert_rthdr(struct sock *sk, struct ipv6_rt_hdr *hdr) ...@@ -406,8 +406,7 @@ ipv6_invert_rthdr(struct sock *sk, struct ipv6_rt_hdr *hdr)
memcpy(opt->srcrt, hdr, sizeof(*hdr)); memcpy(opt->srcrt, hdr, sizeof(*hdr));
irthdr = (struct rt0_hdr*)opt->srcrt; irthdr = (struct rt0_hdr*)opt->srcrt;
/* Obsolete field, MBZ, when originated by us */ irthdr->reserved = 0;
irthdr->bitmap = 0;
opt->srcrt->segments_left = n; opt->srcrt->segments_left = n;
for (i=0; i<n; i++) for (i=0; i<n; i++)
memcpy(irthdr->addr+i, rthdr->addr+(n-1-i), 16); memcpy(irthdr->addr+i, rthdr->addr+(n-1-i), 16);
......
...@@ -161,8 +161,8 @@ match(const struct sk_buff *skb, ...@@ -161,8 +161,8 @@ match(const struct sk_buff *skb,
((rtinfo->hdrlen == hdrlen) ^ ((rtinfo->hdrlen == hdrlen) ^
!!(rtinfo->invflags & IP6T_RT_INV_LEN)))); !!(rtinfo->invflags & IP6T_RT_INV_LEN))));
DEBUGP("res %02X %02X %02X ", DEBUGP("res %02X %02X %02X ",
(rtinfo->flags & IP6T_RT_RES), ((struct rt0_hdr *)rh)->bitmap, (rtinfo->flags & IP6T_RT_RES), ((struct rt0_hdr *)rh)->reserved,
!((rtinfo->flags & IP6T_RT_RES) && (((struct rt0_hdr *)rh)->bitmap))); !((rtinfo->flags & IP6T_RT_RES) && (((struct rt0_hdr *)rh)->reserved)));
ret = (rh != NULL) ret = (rh != NULL)
&& &&
...@@ -179,12 +179,12 @@ match(const struct sk_buff *skb, ...@@ -179,12 +179,12 @@ match(const struct sk_buff *skb,
!!(rtinfo->invflags & IP6T_RT_INV_TYP))); !!(rtinfo->invflags & IP6T_RT_INV_TYP)));
if (ret && (rtinfo->flags & IP6T_RT_RES)) { if (ret && (rtinfo->flags & IP6T_RT_RES)) {
u_int32_t *bp, _bitmap; u_int32_t *rp, _reserved;
bp = skb_header_pointer(skb, rp = skb_header_pointer(skb,
ptr + offsetof(struct rt0_hdr, bitmap), ptr + offsetof(struct rt0_hdr, reserved),
sizeof(_bitmap), &_bitmap); sizeof(_reserved), &_reserved);
ret = (*bp == 0); ret = (*rp == 0);
} }
DEBUGP("#%d ",rtinfo->addrnr); DEBUGP("#%d ",rtinfo->addrnr);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment