net: Convert printks to pr_<level>
[deliverable/linux.git] / net / ipv4 / raw.c
index 007e2eb769d33ede3afdb4e4fc69c3e9de6db1b4..bbd604c68e68bd0a4b9a400d3055cb45055a6d42 100644 (file)
@@ -292,7 +292,8 @@ static int raw_rcv_skb(struct sock * sk, struct sk_buff * skb)
 {
        /* Charge it to the socket. */
 
-       if (ip_queue_rcv_skb(sk, skb) < 0) {
+       ipv4_pktinfo_prepare(skb);
+       if (sock_queue_rcv_skb(sk, skb) < 0) {
                kfree_skb(skb);
                return NET_RX_DROP;
        }
@@ -327,6 +328,7 @@ static int raw_send_hdrinc(struct sock *sk, struct flowi4 *fl4,
        unsigned int iphlen;
        int err;
        struct rtable *rt = *rtp;
+       int hlen, tlen;
 
        if (length > rt->dst.dev->mtu) {
                ip_local_error(sk, EMSGSIZE, fl4->daddr, inet->inet_dport,
@@ -336,12 +338,14 @@ static int raw_send_hdrinc(struct sock *sk, struct flowi4 *fl4,
        if (flags&MSG_PROBE)
                goto out;
 
+       hlen = LL_RESERVED_SPACE(rt->dst.dev);
+       tlen = rt->dst.dev->needed_tailroom;
        skb = sock_alloc_send_skb(sk,
-                                 length + LL_ALLOCATED_SPACE(rt->dst.dev) + 15,
+                                 length + hlen + tlen + 15,
                                  flags & MSG_DONTWAIT, &err);
        if (skb == NULL)
                goto error;
-       skb_reserve(skb, LL_RESERVED_SPACE(rt->dst.dev));
+       skb_reserve(skb, hlen);
 
        skb->priority = sk->sk_priority;
        skb->mark = sk->sk_mark;
@@ -487,11 +491,8 @@ static int raw_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
                if (msg->msg_namelen < sizeof(*usin))
                        goto out;
                if (usin->sin_family != AF_INET) {
-                       static int complained;
-                       if (!complained++)
-                               printk(KERN_INFO "%s forgot to set AF_INET in "
-                                                "raw sendmsg. Fix it!\n",
-                                                current->comm);
+                       pr_info_once("%s: %s forgot to set AF_INET. Fix it!\n",
+                                    __func__, current->comm);
                        err = -EAFNOSUPPORT;
                        if (usin->sin_family)
                                goto out;
@@ -559,7 +560,8 @@ static int raw_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
                        ipc.oif = inet->mc_index;
                if (!saddr)
                        saddr = inet->mc_addr;
-       }
+       } else if (!ipc.oif)
+               ipc.oif = inet->uc_index;
 
        flowi4_init_output(&fl4, ipc.oif, sk->sk_mark, tos,
                           RT_SCOPE_UNIVERSE,
This page took 0.026732 seconds and 5 git commands to generate.