[sr-dev] git:andrei/raw_sock: raw sockets: get dst. ip from the ip header

Andrei Pelinescu-Onciul andrei at iptel.org
Thu Jun 10 11:37:22 CEST 2010


Module: sip-router
Branch: andrei/raw_sock
Commit: fb20a055a029198cbc9dd5c755c3806fbb1e80cf
URL:    http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=fb20a055a029198cbc9dd5c755c3806fbb1e80cf

Author: Andrei Pelinescu-Onciul <andrei at iptel.org>
Committer: Andrei Pelinescu-Onciul <andrei at iptel.org>
Date:   Wed Jun  9 22:58:55 2010 +0200

raw sockets: get dst. ip from the ip header

Get the destination ip from the packet header (when using
IP_HDRINCL we don't set PKT_INFO so we don't have the destination
information).

---

 raw_sock.c |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/raw_sock.c b/raw_sock.c
index fb357c0..e8b90b1 100644
--- a/raw_sock.c
+++ b/raw_sock.c
@@ -284,9 +284,13 @@ int raw_udp4_recv(int rsock, char** buf, int len, union sockaddr_union* from,
 	/* advance buf */
 	*buf=udp_payload;
 	n=(int)(end-*buf);
+	/* fill ip from the packet (needed if no PKT_INFO is used) */
+	dst_ip.af=AF_INET;
+	dst_ip.len=4;
+	dst_ip.u.addr32[0]=iph.daddr;
 	/* fill dst_port */
 	dst_port=ntohs(udph.dest);
-	su_setport(to, dst_port);
+	ip_addr2su(to, &dst_ip, port);
 	/* fill src_port */
 	src_port=ntohs(udph.source);
 	su_setport(from, src_port);




More information about the sr-dev mailing list