raw.c (5a89770daad83df74d77a8d34a1ffaedae565ce9) raw.c (3bd653c8455bc7991bae77968702b31c8f5df883)
1/*
2 * RAW sockets for IPv6
3 * Linux INET6 implementation
4 *
5 * Authors:
6 * Pedro Roque <roque@di.fc.ul.pt>
7 *
8 * Adapted from linux/net/ipv4/raw.c

--- 624 unchanged lines hidden (view full) ---

633
634 skb->ip_summed = CHECKSUM_NONE;
635
636 skb->transport_header = skb->network_header;
637 err = memcpy_fromiovecend((void *)iph, from, 0, length);
638 if (err)
639 goto error_fault;
640
1/*
2 * RAW sockets for IPv6
3 * Linux INET6 implementation
4 *
5 * Authors:
6 * Pedro Roque <roque@di.fc.ul.pt>
7 *
8 * Adapted from linux/net/ipv4/raw.c

--- 624 unchanged lines hidden (view full) ---

633
634 skb->ip_summed = CHECKSUM_NONE;
635
636 skb->transport_header = skb->network_header;
637 err = memcpy_fromiovecend((void *)iph, from, 0, length);
638 if (err)
639 goto error_fault;
640
641 IP6_INC_STATS(rt->rt6i_idev, IPSTATS_MIB_OUTREQUESTS);
641 IP6_INC_STATS(sock_net(sk), rt->rt6i_idev, IPSTATS_MIB_OUTREQUESTS);
642 err = NF_HOOK(PF_INET6, NF_INET_LOCAL_OUT, skb, NULL, rt->u.dst.dev,
643 dst_output);
644 if (err > 0)
645 err = np->recverr ? net_xmit_errno(err) : 0;
646 if (err)
647 goto error;
648out:
649 return 0;
650
651error_fault:
652 err = -EFAULT;
653 kfree_skb(skb);
654error:
642 err = NF_HOOK(PF_INET6, NF_INET_LOCAL_OUT, skb, NULL, rt->u.dst.dev,
643 dst_output);
644 if (err > 0)
645 err = np->recverr ? net_xmit_errno(err) : 0;
646 if (err)
647 goto error;
648out:
649 return 0;
650
651error_fault:
652 err = -EFAULT;
653 kfree_skb(skb);
654error:
655 IP6_INC_STATS(rt->rt6i_idev, IPSTATS_MIB_OUTDISCARDS);
655 IP6_INC_STATS(sock_net(sk), rt->rt6i_idev, IPSTATS_MIB_OUTDISCARDS);
656 return err;
657}
658
659static int rawv6_probe_proto_opt(struct flowi *fl, struct msghdr *msg)
660{
661 struct iovec *iov;
662 u8 __user *type = NULL;
663 u8 __user *code = NULL;

--- 696 unchanged lines hidden ---
656 return err;
657}
658
659static int rawv6_probe_proto_opt(struct flowi *fl, struct msghdr *msg)
660{
661 struct iovec *iov;
662 u8 __user *type = NULL;
663 u8 __user *code = NULL;

--- 696 unchanged lines hidden ---