ipv6: fold sockcm_cookie into ipcm6_cookie
ipcm_cookie includes sockcm_cookie. Do the same for ipcm6_cookie. This reduces the number of arguments that need to be passed around, applies ipcm6_init to all cookie fields at once and reduces code differentiation between ipv4 and ipv6. Signed-off-by: Willem de Bruijn <willemb@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
657a066702
commit
5fdaa88dfe
@@ -1158,8 +1158,7 @@ static void ip6_append_data_mtu(unsigned int *mtu,
|
||||
|
||||
static int ip6_setup_cork(struct sock *sk, struct inet_cork_full *cork,
|
||||
struct inet6_cork *v6_cork, struct ipcm6_cookie *ipc6,
|
||||
struct rt6_info *rt, struct flowi6 *fl6,
|
||||
const struct sockcm_cookie *sockc)
|
||||
struct rt6_info *rt, struct flowi6 *fl6)
|
||||
{
|
||||
struct ipv6_pinfo *np = inet6_sk(sk);
|
||||
unsigned int mtu;
|
||||
@@ -1227,7 +1226,7 @@ static int ip6_setup_cork(struct sock *sk, struct inet_cork_full *cork,
|
||||
cork->base.flags |= IPCORK_ALLFRAG;
|
||||
cork->base.length = 0;
|
||||
|
||||
cork->base.transmit_time = sockc->transmit_time;
|
||||
cork->base.transmit_time = ipc6->sockc.transmit_time;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1241,8 +1240,7 @@ static int __ip6_append_data(struct sock *sk,
|
||||
int getfrag(void *from, char *to, int offset,
|
||||
int len, int odd, struct sk_buff *skb),
|
||||
void *from, int length, int transhdrlen,
|
||||
unsigned int flags, struct ipcm6_cookie *ipc6,
|
||||
const struct sockcm_cookie *sockc)
|
||||
unsigned int flags, struct ipcm6_cookie *ipc6)
|
||||
{
|
||||
struct sk_buff *skb, *skb_prev = NULL;
|
||||
unsigned int maxfraglen, fragheaderlen, mtu, orig_mtu, pmtu;
|
||||
@@ -1321,7 +1319,7 @@ emsgsize:
|
||||
csummode = CHECKSUM_PARTIAL;
|
||||
|
||||
if (sk->sk_type == SOCK_DGRAM || sk->sk_type == SOCK_RAW) {
|
||||
sock_tx_timestamp(sk, sockc->tsflags, &tx_flags);
|
||||
sock_tx_timestamp(sk, ipc6->sockc.tsflags, &tx_flags);
|
||||
if (tx_flags & SKBTX_ANY_SW_TSTAMP &&
|
||||
sk->sk_tsflags & SOF_TIMESTAMPING_OPT_ID)
|
||||
tskey = sk->sk_tskey++;
|
||||
@@ -1563,8 +1561,7 @@ int ip6_append_data(struct sock *sk,
|
||||
int odd, struct sk_buff *skb),
|
||||
void *from, int length, int transhdrlen,
|
||||
struct ipcm6_cookie *ipc6, struct flowi6 *fl6,
|
||||
struct rt6_info *rt, unsigned int flags,
|
||||
const struct sockcm_cookie *sockc)
|
||||
struct rt6_info *rt, unsigned int flags)
|
||||
{
|
||||
struct inet_sock *inet = inet_sk(sk);
|
||||
struct ipv6_pinfo *np = inet6_sk(sk);
|
||||
@@ -1578,7 +1575,7 @@ int ip6_append_data(struct sock *sk,
|
||||
* setup for corking
|
||||
*/
|
||||
err = ip6_setup_cork(sk, &inet->cork, &np->cork,
|
||||
ipc6, rt, fl6, sockc);
|
||||
ipc6, rt, fl6);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
@@ -1592,7 +1589,7 @@ int ip6_append_data(struct sock *sk,
|
||||
|
||||
return __ip6_append_data(sk, fl6, &sk->sk_write_queue, &inet->cork.base,
|
||||
&np->cork, sk_page_frag(sk), getfrag,
|
||||
from, length, transhdrlen, flags, ipc6, sockc);
|
||||
from, length, transhdrlen, flags, ipc6);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(ip6_append_data);
|
||||
|
||||
@@ -1752,8 +1749,7 @@ struct sk_buff *ip6_make_skb(struct sock *sk,
|
||||
void *from, int length, int transhdrlen,
|
||||
struct ipcm6_cookie *ipc6, struct flowi6 *fl6,
|
||||
struct rt6_info *rt, unsigned int flags,
|
||||
struct inet_cork_full *cork,
|
||||
const struct sockcm_cookie *sockc)
|
||||
struct inet_cork_full *cork)
|
||||
{
|
||||
struct inet6_cork v6_cork;
|
||||
struct sk_buff_head queue;
|
||||
@@ -1770,7 +1766,7 @@ struct sk_buff *ip6_make_skb(struct sock *sk,
|
||||
cork->base.opt = NULL;
|
||||
cork->base.dst = NULL;
|
||||
v6_cork.opt = NULL;
|
||||
err = ip6_setup_cork(sk, cork, &v6_cork, ipc6, rt, fl6, sockc);
|
||||
err = ip6_setup_cork(sk, cork, &v6_cork, ipc6, rt, fl6);
|
||||
if (err) {
|
||||
ip6_cork_release(cork, &v6_cork);
|
||||
return ERR_PTR(err);
|
||||
@@ -1781,7 +1777,7 @@ struct sk_buff *ip6_make_skb(struct sock *sk,
|
||||
err = __ip6_append_data(sk, fl6, &queue, &cork->base, &v6_cork,
|
||||
¤t->task_frag, getfrag, from,
|
||||
length + exthdrlen, transhdrlen + exthdrlen,
|
||||
flags, ipc6, sockc);
|
||||
flags, ipc6);
|
||||
if (err) {
|
||||
__ip6_flush_pending_frames(sk, &queue, cork, &v6_cork);
|
||||
return ERR_PTR(err);
|
||||
|
||||
Reference in New Issue
Block a user