summaryrefslogtreecommitdiffstats
path: root/plugins/omudpspoof/omudpspoof.c
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/omudpspoof/omudpspoof.c')
-rw-r--r--plugins/omudpspoof/omudpspoof.c23
1 files changed, 14 insertions, 9 deletions
diff --git a/plugins/omudpspoof/omudpspoof.c b/plugins/omudpspoof/omudpspoof.c
index d2c5364c..a45d49fa 100644
--- a/plugins/omudpspoof/omudpspoof.c
+++ b/plugins/omudpspoof/omudpspoof.c
@@ -353,7 +353,7 @@ UDPSend(instanceData *pData, uchar *pszSourcename, char *msg, size_t len)
bSendSuccess = RSFALSE;
d_pthread_mutex_lock(&mutLibnet);
bNeedUnlock = 1;
- for (r = pData->f_addr; r; r = r->ai_next) {
+ for (r = pData->f_addr; r && bSendSuccess == RSFALSE ; r = r->ai_next) {
tempaddr = (struct sockaddr_in *)r->ai_addr;
libnet_clear_packet(libnet_handle);
/* note: libnet does need ports in host order NOT in network byte order! -- rgerhards, 2009-11-12 */
@@ -367,7 +367,7 @@ UDPSend(instanceData *pData, uchar *pszSourcename, char *msg, size_t len)
libnet_handle, /* libnet handle */
udp); /* libnet id */
if (udp == -1) {
- DBGPRINTF("Can't build UDP header: %s\n", libnet_geterror(libnet_handle));
+ DBGPRINTF("omudpspoof: can't build UDP header: %s\n", libnet_geterror(libnet_handle));
}
ip = libnet_build_ipv4(
@@ -385,21 +385,24 @@ UDPSend(instanceData *pData, uchar *pszSourcename, char *msg, size_t len)
libnet_handle, /* libnet handle */
ip); /* libnet id */
if (ip == -1) {
- DBGPRINTF("Can't build IP header: %s\n", libnet_geterror(libnet_handle));
+ DBGPRINTF("omudpspoof: can't build IP header: %s\n", libnet_geterror(libnet_handle));
}
/* Write it to the wire. */
lsent = libnet_write(libnet_handle);
- if (lsent == -1) {
- DBGPRINTF("omudpspoof: write error: %s\n", libnet_geterror(libnet_handle));
+ if(lsent != LIBNET_IPV4_H+LIBNET_UDP_H+len) {
+ DBGPRINTF("omudpspoof: write error len %d, sent %d: %s\n",
+ LIBNET_IPV4_H+LIBNET_UDP_H+len, lsent, libnet_geterror(libnet_handle));
+ if(lsent != -1) {
+ bSendSuccess = RSTRUE;
+ }
} else {
bSendSuccess = RSTRUE;
- break;
}
}
/* finished looping */
- if (bSendSuccess == RSFALSE) {
- DBGPRINTF("error forwarding via udp, suspending\n");
+ if(bSendSuccess == RSFALSE) {
+ DBGPRINTF("omudpspoof: error sending message, suspending\n");
iRet = RS_RET_SUSPENDED;
}
@@ -467,7 +470,9 @@ CODESTARTdoAction
iMaxLine = glbl.GetMaxLine();
- DBGPRINTF(" %s:%s/udpspoofs\n", pData->host, getFwdPt(pData));
+ //TODO: enable THIS one! DBGPRINTF(" %s:%s/omudpspoof, src '%s', msg strt '%.256s'\n", pData->host,
+ DBGPRINTF(" %s:%s/omudpspoof, src '%s', msg strt '%s'\n", pData->host,
+ getFwdPt(pData), ppString[1], ppString[0]);
psz = (char*) ppString[0];
l = strlen((char*) psz);