| To: | Denis Vlasenko <vda@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> |
|---|---|
| Subject: | Re: UDP sockets bound to ANY send answers with wrong src ip address |
| From: | Julian Anastasov <ja@xxxxxx> |
| Date: | Fri, 11 Jun 2004 16:53:35 +0300 (EEST) |
| Cc: | Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>, <yoshfuji@xxxxxxxxxxxxxx>, <netdev@xxxxxxxxxxx>, <linux-net@xxxxxxxxxxxxxxx>, <davem@xxxxxxxxxx>, <pekkas@xxxxxxxxxx>, <jmorris@xxxxxxxxxx>, <linux-kernel@xxxxxxxxxxxxxxx> |
| In-reply-to: | <200406111527.45955.vda@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> |
| Sender: | netdev-bounce@xxxxxxxxxxx |
Hello,
On Fri, 11 Jun 2004, Denis Vlasenko wrote:
> Hmmm... do I have to set a *routing dest address* field
> to set src ip address of my UDP packet?
Try such function:
static int my_send(int fd, unsigned srcip, (struct sockaddr *) remote,
char *data, int len)
{
struct iovec iov = { data, len };
struct {
struct cmsghdr cm;
struct in_pktinfo ipi;
} cmsg = {
.cm = {
.cmsg_len = sizeof(struct cmsghdr) +
sizeof(struct in_pktinfo),
.cmsg_level = SOL_IP,
.cmsg_type = IP_PKTINFO,
},
.ipi = {
.ipi_ifindex = 0,
.ipi_spec_dst = srcip,
},
};
struct msghdr m = {
.msg_name = remote,
.msg_namelen = sizeof(struct sockaddr_in),
.msg_iov = &iov,
.msg_iovlen = 1,
.msg_control = &cmsg,
.msg_controllen = sizeof(cmsg),
.msg_flags = 0,
};
return sendmsg(fd, &m, MSG_NOSIGNAL|MSG_DONTWAIT);
}
Regards
--
Julian Anastasov <ja@xxxxxx>
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| ||
| Previous by Date: | this thing on?, jamal |
|---|---|
| Next by Date: | Re: Allow IP header alignment to be overriden, Anton Blanchard |
| Previous by Thread: | Re: UDP sockets bound to ANY send answers with wrong src ip address, Denis Vlasenko |
| Next by Thread: | Re: UDP sockets bound to ANY send answers with wrong src ip address, Denis Vlasenko |
| Indexes: | [Date] [Thread] [Top] [All Lists] |