Commit a7280d6a authored by Sridhar Samudrala's avatar Sridhar Samudrala

[IPV{4,6}]: Add ipfragok arg to ip_queue_xmit.

parent 6a3354a9
......@@ -96,7 +96,7 @@ extern int ip_mc_output(struct sk_buff *skb);
extern int ip_fragment(struct sk_buff *skb, int (*out)(struct sk_buff*));
extern int ip_do_nat(struct sk_buff *skb);
extern void ip_send_check(struct iphdr *ip);
extern int ip_queue_xmit(struct sk_buff *skb);
extern int ip_queue_xmit(struct sk_buff *skb, int ipfragok);
extern void ip_init(void);
extern int ip_append_data(struct sock *sk,
int getfrag(void *from, char *to, int offset, int len,
......
......@@ -566,7 +566,8 @@ static inline void tcp_openreq_free(struct open_request *req)
*/
struct tcp_func {
int (*queue_xmit) (struct sk_buff *skb);
int (*queue_xmit) (struct sk_buff *skb,
int ipfragok);
void (*send_check) (struct sock *sk,
struct tcphdr *th,
......
......@@ -280,7 +280,7 @@ int ip_output(struct sk_buff *skb)
return ip_finish_output(skb);
}
int ip_queue_xmit(struct sk_buff *skb)
int ip_queue_xmit(struct sk_buff *skb, int ipfragok)
{
struct sock *sk = skb->sk;
struct inet_opt *inet = inet_sk(sk);
......@@ -337,7 +337,7 @@ int ip_queue_xmit(struct sk_buff *skb)
iph = (struct iphdr *) skb_push(skb, sizeof(struct iphdr) + (opt ? opt->optlen : 0));
*((__u16 *)iph) = htons((4 << 12) | (5 << 8) | (inet->tos & 0xff));
iph->tot_len = htons(skb->len);
if (ip_dont_fragment(sk, &rt->u.dst))
if (ip_dont_fragment(sk, &rt->u.dst) && !ipfragok)
iph->frag_off = htons(IP_DF);
else
iph->frag_off = 0;
......
......@@ -276,7 +276,7 @@ int tcp_transmit_skb(struct sock *sk, struct sk_buff *skb)
TCP_INC_STATS(TcpOutSegs);
err = tp->af_specific->queue_xmit(skb);
err = tp->af_specific->queue_xmit(skb, 0);
if (err <= 0)
return err;
......
......@@ -1746,7 +1746,7 @@ static int tcp_v6_rebuild_header(struct sock *sk)
return 0;
}
static int tcp_v6_xmit(struct sk_buff *skb)
static int tcp_v6_xmit(struct sk_buff *skb, int ipfragok)
{
struct sock *sk = skb->sk;
struct inet_opt *inet = inet_sk(sk);
......
......@@ -248,6 +248,8 @@ EXPORT_SYMBOL(inet_unregister_protosw);
EXPORT_SYMBOL(ip_route_output_key);
EXPORT_SYMBOL(ip_route_input);
EXPORT_SYMBOL(icmp_send);
EXPORT_SYMBOL(icmp_statistics);
EXPORT_SYMBOL(icmp_err_convert);
EXPORT_SYMBOL(ip_options_compile);
EXPORT_SYMBOL(ip_options_undo);
EXPORT_SYMBOL(arp_send);
......
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