|
@@ -429,15 +429,11 @@ static void icmp_reply(struct icmp_bxm *icmp_param, struct sk_buff *skb)
|
|
|
|
|
|
icmp_param->data.icmph.checksum = 0;
|
|
icmp_param->data.icmph.checksum = 0;
|
|
|
|
|
|
|
|
+ ipcm_init(&ipc);
|
|
inet->tos = ip_hdr(skb)->tos;
|
|
inet->tos = ip_hdr(skb)->tos;
|
|
sk->sk_mark = mark;
|
|
sk->sk_mark = mark;
|
|
daddr = ipc.addr = ip_hdr(skb)->saddr;
|
|
daddr = ipc.addr = ip_hdr(skb)->saddr;
|
|
saddr = fib_compute_spec_dst(skb);
|
|
saddr = fib_compute_spec_dst(skb);
|
|
- ipc.opt = NULL;
|
|
|
|
- ipc.tx_flags = 0;
|
|
|
|
- ipc.ttl = 0;
|
|
|
|
- ipc.tos = -1;
|
|
|
|
- ipc.sockc.transmit_time = 0;
|
|
|
|
|
|
|
|
if (icmp_param->replyopts.opt.opt.optlen) {
|
|
if (icmp_param->replyopts.opt.opt.optlen) {
|
|
ipc.opt = &icmp_param->replyopts.opt;
|
|
ipc.opt = &icmp_param->replyopts.opt;
|
|
@@ -711,12 +707,9 @@ void icmp_send(struct sk_buff *skb_in, int type, int code, __be32 info)
|
|
icmp_param.offset = skb_network_offset(skb_in);
|
|
icmp_param.offset = skb_network_offset(skb_in);
|
|
inet_sk(sk)->tos = tos;
|
|
inet_sk(sk)->tos = tos;
|
|
sk->sk_mark = mark;
|
|
sk->sk_mark = mark;
|
|
|
|
+ ipcm_init(&ipc);
|
|
ipc.addr = iph->saddr;
|
|
ipc.addr = iph->saddr;
|
|
ipc.opt = &icmp_param.replyopts.opt;
|
|
ipc.opt = &icmp_param.replyopts.opt;
|
|
- ipc.tx_flags = 0;
|
|
|
|
- ipc.ttl = 0;
|
|
|
|
- ipc.tos = -1;
|
|
|
|
- ipc.sockc.transmit_time = 0;
|
|
|
|
|
|
|
|
rt = icmp_route_lookup(net, &fl4, skb_in, iph, saddr, tos, mark,
|
|
rt = icmp_route_lookup(net, &fl4, skb_in, iph, saddr, tos, mark,
|
|
type, code, &icmp_param);
|
|
type, code, &icmp_param);
|