This patch fixes BUG when pushing IPv6 destination options over an
IPv6 raw socket. Patch is based on one from Thomas Graf <tgr@reeler.org>.
memcpy(np->cork.opt, opt, opt->tot_len);
inet->cork.flags |= IPCORK_OPT;
/* need source address above miyazawa*/
- exthdrlen += opt->opt_flen ? opt->opt_flen : 0;
}
dst_hold(&rt->u.dst);
np->cork.rt = rt;
length += exthdrlen;
transhdrlen += exthdrlen;
}
+ exthdrlen += opt ? opt->opt_flen : 0;
} else {
rt = np->cork.rt;
if (inet->cork.flags & IPCORK_OPT)
if (msg->msg_controllen) {
opt = &opt_space;
memset(opt, 0, sizeof(struct ipv6_txoptions));
+ opt->tot_len = sizeof(struct ipv6_txoptions);
err = datagram_send_ctl(msg, &fl, opt, &hlimit);
if (err < 0) {