Lines Matching refs:ipc
486 struct ipcm_cookie ipc; in raw_sendmsg() local
540 ipcm_init_sk(&ipc, inet); in raw_sendmsg()
543 ipc.protocol = IPPROTO_RAW; in raw_sendmsg()
546 err = ip_cmsg_send(sk, msg, &ipc, false); in raw_sendmsg()
548 kfree(ipc.opt); in raw_sendmsg()
551 if (ipc.opt) in raw_sendmsg()
555 saddr = ipc.addr; in raw_sendmsg()
556 ipc.addr = daddr; in raw_sendmsg()
558 if (!ipc.opt) { in raw_sendmsg()
566 ipc.opt = &opt_copy.opt; in raw_sendmsg()
571 if (ipc.opt) { in raw_sendmsg()
578 if (ipc.opt->opt.srr) { in raw_sendmsg()
581 daddr = ipc.opt->opt.faddr; in raw_sendmsg()
584 tos = get_rttos(&ipc, inet); in raw_sendmsg()
585 scope = ip_sendmsg_scope(inet, &ipc, msg); in raw_sendmsg()
589 if (!ipc.oif || netif_index_is_l3_master(sock_net(sk), ipc.oif)) in raw_sendmsg()
590 ipc.oif = READ_ONCE(inet->mc_index); in raw_sendmsg()
593 } else if (!ipc.oif) { in raw_sendmsg()
594 ipc.oif = uc_index; in raw_sendmsg()
602 if (ipc.oif != uc_index && in raw_sendmsg()
603 ipc.oif == l3mdev_master_ifindex_by_index(sock_net(sk), in raw_sendmsg()
605 ipc.oif = uc_index; in raw_sendmsg()
609 flowi4_init_output(&fl4, ipc.oif, ipc.sockc.mark, tos, scope, in raw_sendmsg()
610 hdrincl ? ipc.protocol : sk->sk_protocol, in raw_sendmsg()
645 &rt, msg->msg_flags, &ipc.sockc); in raw_sendmsg()
648 if (!ipc.addr) in raw_sendmsg()
649 ipc.addr = fl4.daddr; in raw_sendmsg()
653 &ipc, &rt, msg->msg_flags); in raw_sendmsg()
665 kfree(ipc.opt); in raw_sendmsg()