javanetsim-cvs Mailing List for javaNetSim (Page 14)
Status: Beta
Brought to you by:
darkkey
You can subscribe to this list here.
2005 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(120) |
Dec
(62) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2006 |
Jan
(1) |
Feb
(69) |
Mar
(3) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(76) |
Oct
(28) |
Nov
(77) |
Dec
(186) |
2007 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(36) |
Oct
(61) |
Nov
(23) |
Dec
|
2008 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(17) |
Oct
(105) |
Nov
(5) |
Dec
(1) |
2009 |
Jan
|
Feb
(4) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(8) |
Oct
(9) |
Nov
|
Dec
|
From: Alexander B. <da...@us...> - 2006-12-17 18:49:59
|
Update of /cvsroot/javanetsim/IceScan/icesockets In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv26141/icesockets Modified Files: crawsocket.h sock_eth.h sock_name.h sock_types.h Log Message: Index: sock_types.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/icesockets/sock_types.h,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** sock_types.h 17 Dec 2006 14:23:15 -0000 1.20 --- sock_types.h 17 Dec 2006 18:49:55 -0000 1.21 *************** *** 195,203 **** tcp_seq th_ack; /* acknowledgement number */ #if BYTE_ORDER == LITTLE_ENDIAN ! u_int th_x2:4, /* (unused) */ ! th_off:4; /* data offset */ #else if BYTE_ORDER == BIG_ENDIAN ! u_int th_off:4, /* data offset */ ! th_x2:4; /* (unused) */ #endif u_char th_flags; --- 195,203 ---- tcp_seq th_ack; /* acknowledgement number */ #if BYTE_ORDER == LITTLE_ENDIAN ! u_char th_x2:4, /* (unused) */ ! th_off:4; /* data offset */ #else if BYTE_ORDER == BIG_ENDIAN ! u_char th_off:4, /* data offset */ ! th_x2:4; /* (unused) */ #endif u_char th_flags; *************** *** 342,352 **** { #if __BYTE_ORDER == __LITTLE_ENDIAN ! unsigned int ihl:4; ! unsigned int version:4; #elif __BYTE_ORDER == __BIG_ENDIAN ! unsigned int version:4; ! unsigned int ihl:4; #else ! # error "Please fix <bits/endian.h>" #endif my_uint8_t tos; --- 342,352 ---- { #if __BYTE_ORDER == __LITTLE_ENDIAN ! unsigned char ihl:4; ! unsigned char version:4; #elif __BYTE_ORDER == __BIG_ENDIAN ! unsigned char version:4; ! unsigned char ihl:4; #else ! # error "Please fix <bits/endian.h>" #endif my_uint8_t tos; Index: crawsocket.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/icesockets/crawsocket.h,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** crawsocket.h 17 Dec 2006 15:51:54 -0000 1.18 --- crawsocket.h 17 Dec 2006 18:49:55 -0000 1.19 *************** *** 201,205 **** }else if ((res = sendto(destination.c_str(), packet, ntohs(ip->tot_len), 0)) == -1) { ! perror("sendto in send_tcp_raw"); #ifdef WIN32 free(packet); --- 201,205 ---- }else if ((res = sendto(destination.c_str(), packet, ntohs(ip->tot_len), 0)) == -1) { ! perror("sendto in send_tcp_raw"); #ifdef WIN32 free(packet); *************** *** 208,212 **** } - #ifdef WIN32 free(packet); --- 208,211 ---- Index: sock_name.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/icesockets/sock_name.h,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** sock_name.h 16 Dec 2006 20:44:18 -0000 1.10 --- sock_name.h 17 Dec 2006 18:49:55 -0000 1.11 *************** *** 106,110 **** int len = make_sockname(saddr, nisname.c_str(), 53, AF_INET); ! if( (rc = getnameinfo((sockaddr *) &saddr, len, hbuf, sizeof(hbuf), NULL, 0, NI_NAMEREQD)) < 0) { //perror("getnameinfo"); return -1; --- 106,110 ---- int len = make_sockname(saddr, nisname.c_str(), 53, AF_INET); ! if( (rc = getnameinfo((sockaddr *) &saddr, len, hbuf, sizeof(hbuf), NULL, 0, NI_NAMEREQD)) != 0) { //CHECK IN LINUX/BSD!!! //perror("getnameinfo"); return -1; Index: sock_eth.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/icesockets/sock_eth.h,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** sock_eth.h 17 Dec 2006 15:51:54 -0000 1.4 --- sock_eth.h 17 Dec 2006 18:49:55 -0000 1.5 *************** *** 2,17 **** #define _iceeth_H - /*#ifdef WIN3 - #include "sock_types.h" - - int send_ip_packet(const void *buf, size_t len){ - ip_t *i = ip_open(); - - ip_send(i, buf, len); - - ip_close(i); - - return 0; - }*/ #ifdef __CYGWIN__ int send_ip_packet(const void *buf, size_t len){ --- 2,5 ---- *************** *** 154,158 **** iph = (struct ip_hdr *)buf; ! if ((ipi = i_lookup_ip_intf(ip, iph->ip_dst)) == NULL) { errno = EHOSTUNREACH; return (-1); --- 142,146 ---- iph = (struct ip_hdr *)buf; ! if ((ipi = i_lookup_ip_intf(ip, iph->ip_dst)) == NULL) { errno = EHOSTUNREACH; return (-1); *************** *** 216,220 **** --- 204,210 ---- } return (len); + #define ip_hl ip_hv&0x0f } + memcpy(frame + ETH_HDR_LEN, buf, len); i = ETH_HDR_LEN + len; *************** *** 222,227 **** return (-1); - #define ip_hl ip_hv&0x0f - return (len); } --- 212,215 ---- |
From: Alexander B. <da...@us...> - 2006-12-17 18:49:59
|
Update of /cvsroot/javanetsim/IceScan In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv26141 Modified Files: csubtarget.h iceparams.h Log Message: Index: iceparams.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/iceparams.h,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** iceparams.h 17 Dec 2006 15:06:36 -0000 1.16 --- iceparams.h 17 Dec 2006 18:49:55 -0000 1.17 *************** *** 124,130 **** } ! #ifdef WIN32 ! ethernet = true; ! #endif init_default_ports(); --- 124,130 ---- } ! //#ifdef WIN32 ! // ethernet = true; ! //#endif init_default_ports(); Index: csubtarget.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/csubtarget.h,v retrieving revision 1.43 retrieving revision 1.44 diff -C2 -d -r1.43 -r1.44 *** csubtarget.h 17 Dec 2006 15:06:36 -0000 1.43 --- csubtarget.h 17 Dec 2006 18:49:55 -0000 1.44 *************** *** 523,528 **** if ((tcp->th_flags & TH_RST) && (par->scan_type == FIN_SCAN || par->scan_type == NULL_SCAN || par->scan_type == XMAS_SCAN)) { ! port = ntohs(tcp->th_sport); ! if(scanning_ports.find(port) != scanning_ports.end()){ if(!scanning_ports[port].done){ --- 523,528 ---- if ((tcp->th_flags & TH_RST) && (par->scan_type == FIN_SCAN || par->scan_type == NULL_SCAN || par->scan_type == XMAS_SCAN)) { ! port = ntohs(tcp->th_sport); ! if(scanning_ports.find(port) != scanning_ports.end()){ if(!scanning_ports[port].done){ |
From: Alexander B. <da...@us...> - 2006-12-17 15:51:57
|
Update of /cvsroot/javanetsim/IceScan/icesockets In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv21412/icesockets Modified Files: crawsocket.h sock_eth.h sock_win.h Log Message: Index: crawsocket.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/icesockets/crawsocket.h,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** crawsocket.h 17 Dec 2006 15:06:37 -0000 1.17 --- crawsocket.h 17 Dec 2006 15:51:54 -0000 1.18 *************** *** 203,214 **** perror("sendto in send_tcp_raw"); #ifdef WIN32 ! free(packet); ! #endif return -1; } ! ! ! #ifdef WIN32 free(packet); #endif --- 203,213 ---- perror("sendto in send_tcp_raw"); #ifdef WIN32 ! free(packet); ! #endif return -1; } + ! #ifdef WIN32 free(packet); #endif Index: sock_eth.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/icesockets/sock_eth.h,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** sock_eth.h 17 Dec 2006 15:14:51 -0000 1.3 --- sock_eth.h 17 Dec 2006 15:51:54 -0000 1.4 *************** *** 2,6 **** #define _iceeth_H ! #ifdef __WIN32__ #include "sock_types.h" --- 2,6 ---- #define _iceeth_H ! /*#ifdef WIN3 #include "sock_types.h" *************** *** 13,18 **** return 0; ! } ! #elif __CYGWIN__ int send_ip_packet(const void *buf, size_t len){ --- 13,18 ---- return 0; ! }*/ ! #ifdef __CYGWIN__ int send_ip_packet(const void *buf, size_t len){ *************** *** 23,27 **** #include "queue.h" ! #include <dnet.h> struct ip_intf { --- 23,27 ---- #include "queue.h" ! //#include <dnet.h> struct ip_intf { *************** *** 186,191 **** if (len > ipi->mtu) { u_char *p, *start, *end, *ip_data; int ip_hl, fraglen; ! ip_hl = iph->ip_hl << 2; fraglen = ipi->mtu - ip_hl; --- 186,192 ---- if (len > ipi->mtu) { u_char *p, *start, *end, *ip_data; + #undef ip_hl int ip_hl, fraglen; ! ip_hl = iph->ip_hl << 2; fraglen = ipi->mtu - ip_hl; *************** *** 221,224 **** --- 222,227 ---- return (-1); + #define ip_hl ip_hv&0x0f + return (len); } *************** *** 238,242 **** --- 241,249 ---- } if (ip->fd >= 0) + #ifdef WIN32 + closesocket(ip->fd); + #else close(ip->fd); + #endif if (ip->route != NULL) route_close(ip->route); *************** *** 253,257 **** ip_t *i = i_ip_open(); ! i_ip_send(i, buf, len); i_ip_close(i); --- 260,264 ---- ip_t *i = i_ip_open(); ! i_ip_send(i, buf, len); i_ip_close(i); Index: sock_win.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/icesockets/sock_win.h,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** sock_win.h 17 Dec 2006 15:06:37 -0000 1.7 --- sock_win.h 17 Dec 2006 15:51:54 -0000 1.8 *************** *** 20,24 **** #pragma comment(lib, "wpcap.lib") #pragma comment(lib, "packet.lib") ! #pragma comment(lib, "libdnet-stripped.lib") #pragma comment(lib, "iphlpapi.lib") #ifndef __NO_LIBPCRE__ --- 20,24 ---- #pragma comment(lib, "wpcap.lib") #pragma comment(lib, "packet.lib") ! #pragma comment(lib, "dnet.lib") //libdnet-stripped #pragma comment(lib, "iphlpapi.lib") #ifndef __NO_LIBPCRE__ |
From: Alexander B. <da...@us...> - 2006-12-17 15:51:57
|
Update of /cvsroot/javanetsim/IceScan/vccproject In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv21412/vccproject Modified Files: IceScan.suo Log Message: Index: IceScan.suo =================================================================== RCS file: /cvsroot/javanetsim/IceScan/vccproject/IceScan.suo,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 Binary files /tmp/cvsfjSgro and /tmp/cvsauvExT differ |
From: Alexander B. <da...@us...> - 2006-12-17 15:14:54
|
Update of /cvsroot/javanetsim/IceScan/icesockets In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv5646 Modified Files: queue.h sock_eth.h Log Message: no message Index: sock_eth.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/icesockets/sock_eth.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** sock_eth.h 17 Dec 2006 15:06:37 -0000 1.2 --- sock_eth.h 17 Dec 2006 15:14:51 -0000 1.3 *************** *** 23,27 **** #include "queue.h" ! #include "dnet.h" struct ip_intf { --- 23,27 ---- #include "queue.h" ! #include <dnet.h> struct ip_intf { Index: queue.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/icesockets/queue.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** queue.h 17 Dec 2006 15:06:37 -0000 1.1 --- queue.h 17 Dec 2006 15:14:51 -0000 1.2 *************** *** 1,5 **** - /* $OpenBSD: queue.h,v 1.22 2001/06/23 04:39:35 angelos Exp $ */ - /* $NetBSD: queue.h,v 1.11 1996/05/16 05:17:14 mycroft Exp $ */ - /* * Copyright (c) 1991, 1993 --- 1,2 ---- *************** *** 14,22 **** * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. ! * 3. All advertising materials mentioning features or use of this software ! * must display the following acknowledgement: ! * This product includes software developed by the University of ! * California, Berkeley and its contributors. ! * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. --- 11,15 ---- * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. ! * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. |
From: Alexander B. <da...@us...> - 2006-12-17 15:06:43
|
Update of /cvsroot/javanetsim/IceScan/nbproject In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv2552/nbproject Modified Files: configurations.xml Log Message: no message Index: configurations.xml =================================================================== RCS file: /cvsroot/javanetsim/IceScan/nbproject/configurations.xml,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** configurations.xml 17 Dec 2006 11:00:20 -0000 1.17 --- configurations.xml 17 Dec 2006 15:06:37 -0000 1.18 *************** *** 10,13 **** --- 10,14 ---- <itemPath>icesockets/sock_arp.h</itemPath> <itemPath>icesockets/sock_err.h</itemPath> + <itemPath>icesockets/sock_eth.h</itemPath> <itemPath>icesockets/sock_name.h</itemPath> <itemPath>icesockets/sock_pcap.h</itemPath> *************** *** 135,138 **** --- 136,142 ---- <itemTool>3</itemTool> </item> + <item path="icesockets/sock_eth.h"> + <itemTool>3</itemTool> + </item> </conf> </confs> |
From: Alexander B. <da...@us...> - 2006-12-17 15:06:41
|
Update of /cvsroot/javanetsim/IceScan/icesockets In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv2552/icesockets Modified Files: sock_win.h sock_arp.h crawsocket.h csocket.h sock_eth.h Added Files: queue.h Log Message: no message Index: sock_arp.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/icesockets/sock_arp.h,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** sock_arp.h 17 Dec 2006 12:14:35 -0000 1.5 --- sock_arp.h 17 Dec 2006 15:06:37 -0000 1.6 *************** *** 10,14 **** #include "sock_types.h" ! #include <Iphlpapi.h> icestring get_arp_from_cache(icestring &ip) --- 10,14 ---- #include "sock_types.h" ! icestring get_arp_from_cache(icestring &ip) Index: sock_eth.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/icesockets/sock_eth.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** sock_eth.h 17 Dec 2006 14:31:24 -0000 1.1 --- sock_eth.h 17 Dec 2006 15:06:37 -0000 1.2 *************** *** 2,6 **** #define _iceeth_H ! #ifndef __CYGWIN__ #include "sock_types.h" --- 2,6 ---- #define _iceeth_H ! #ifdef __WIN32__ #include "sock_types.h" *************** *** 8,24 **** ip_t *i = ip_open(); ! ip_send(i, buf, len); ! ip_close(i); ! return 0; } ! #else ! int send_ip_packet(const void *buf, size_t len){ return 1; } #endif ! #endif \ No newline at end of file --- 8,265 ---- ip_t *i = ip_open(); ! ip_send(i, buf, len); ! ip_close(i); ! return 0; } ! #elif __CYGWIN__ ! int send_ip_packet(const void *buf, size_t len){ return 1; } + + #else + + #include "queue.h" + #include "dnet.h" + + struct ip_intf { + eth_t *eth; + char name[INTF_NAME_LEN]; + struct addr ha; + struct addr pa; + int mtu; + LIST_ENTRY(ip_intf) next; + }; + + struct ip_handle { + arp_t *arp; + intf_t *intf; + route_t *route; + int fd; + struct sockaddr_in sin; + + LIST_HEAD(, ip_intf) ip_intf_list; + }; + + static int + i_add_ip_intf(const struct intf_entry *entry, void *arg) + { + ip_t *ip = (ip_t *)arg; + struct ip_intf *ipi; + + if (entry->intf_type == INTF_TYPE_ETH && + (entry->intf_flags & INTF_FLAG_UP) != 0 && + entry->intf_mtu >= ETH_LEN_MIN && + entry->intf_addr.addr_type == ADDR_TYPE_IP && + entry->intf_link_addr.addr_type == ADDR_TYPE_ETH) { + + if ((ipi = (ip_intf*) calloc(1, sizeof(*ipi))) == NULL) + return (-1); + + strncpy(ipi->name, entry->intf_name, sizeof(ipi->name)); + memcpy(&ipi->ha, &entry->intf_link_addr, sizeof(ipi->ha)); + memcpy(&ipi->pa, &entry->intf_addr, sizeof(ipi->pa)); + ipi->mtu = entry->intf_mtu; + + LIST_INSERT_HEAD(&ip->ip_intf_list, ipi, next); + } + return (0); + } + + ip_t * + i_ip_open(void) + { + ip_t *ip; + + if ((ip = (ip_t*) calloc(1, sizeof(*ip))) != NULL) { + ip->fd = -1; + + if ((ip->arp = arp_open()) == NULL || + (ip->intf = intf_open()) == NULL || + (ip->route = route_open()) == NULL) + return (ip_close(ip)); + + if ((ip->fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) + return (ip_close(ip)); + + memset(&ip->sin, 0, sizeof(ip->sin)); + ip->sin.sin_family = AF_INET; + ip->sin.sin_port = htons(666); + + LIST_INIT(&ip->ip_intf_list); + + if (intf_loop(ip->intf, i_add_ip_intf, ip) != 0) + return (ip_close(ip)); + } + return (ip); + } + + static struct ip_intf * + i_lookup_ip_intf(ip_t *ip, ip_addr_t dst) + { + struct ip_intf *ipi; + int n; + + ip->sin.sin_addr.s_addr = dst; + n = sizeof(ip->sin); + + if (connect(ip->fd, (struct sockaddr *)&ip->sin, n) < 0) + return (NULL); + + if (getsockname(ip->fd, (struct sockaddr *)&ip->sin, (socklen_t *) &n) < 0) + return (NULL); + + LIST_FOREACH(ipi, &ip->ip_intf_list, next) { + if (ipi->pa.addr_ip == ip->sin.sin_addr.s_addr) { + if (ipi->eth == NULL) { + if ((ipi->eth = eth_open(ipi->name)) == NULL) + return (NULL); + } + if (ipi != LIST_FIRST(&ip->ip_intf_list)) { + LIST_REMOVE(ipi, next); + LIST_INSERT_HEAD(&ip->ip_intf_list, ipi, next); + } + return (ipi); + } + } + return (NULL); + } + + static void + i_request_arp(struct ip_intf *ipi, struct addr *dst) + { + u_char frame[ETH_HDR_LEN + ARP_HDR_LEN + ARP_ETHIP_LEN]; + + eth_pack_hdr(frame, ETH_ADDR_BROADCAST, ipi->ha.addr_eth, + ETH_TYPE_ARP); + arp_pack_hdr_ethip(frame + ETH_HDR_LEN, ARP_OP_REQUEST, + ipi->ha.addr_eth, ipi->pa.addr_ip, ETH_ADDR_BROADCAST, + dst->addr_ip); + + eth_send(ipi->eth, frame, sizeof(frame)); + } + + ssize_t + i_ip_send(ip_t *ip, const void *buf, size_t len) + { + struct ip_hdr *iph; + struct ip_intf *ipi; + struct arp_entry arpent; + struct route_entry rtent; + u_char frame[ETH_LEN_MAX]; + int i, usec; + + iph = (struct ip_hdr *)buf; + + if ((ipi = i_lookup_ip_intf(ip, iph->ip_dst)) == NULL) { + errno = EHOSTUNREACH; + return (-1); + } + arpent.arp_pa.addr_type = ADDR_TYPE_IP; + arpent.arp_pa.addr_bits = IP_ADDR_BITS; + arpent.arp_pa.addr_ip = iph->ip_dst; + memcpy(&rtent.route_dst, &arpent.arp_pa, sizeof(rtent.route_dst)); + + for (i = 0, usec = 10; i < 3; i++, usec *= 100) { + if (arp_get(ip->arp, &arpent) == 0) + break; + + if (route_get(ip->route, &rtent) == 0 && + rtent.route_gw.addr_ip != ipi->pa.addr_ip) { + memcpy(&arpent.arp_pa, &rtent.route_gw, + sizeof(arpent.arp_pa)); + if (arp_get(ip->arp, &arpent) == 0) + break; + } + i_request_arp(ipi, &arpent.arp_pa); + + usleep(usec); + } + if (i == 3) + memset(&arpent.arp_ha.addr_eth, 0xff, ETH_ADDR_LEN); + + eth_pack_hdr(frame, arpent.arp_ha.addr_eth, + ipi->ha.addr_eth, ETH_TYPE_IP); + + if (len > ipi->mtu) { + u_char *p, *start, *end, *ip_data; + int ip_hl, fraglen; + + ip_hl = iph->ip_hl << 2; + fraglen = ipi->mtu - ip_hl; + + iph = (struct ip_hdr *)(frame + ETH_HDR_LEN); + memcpy(iph, buf, ip_hl); + ip_data = (u_char *)iph + ip_hl; + + start = (u_char *)buf + ip_hl; + end = (u_char *)buf + len; + + for (p = start; p < end; ) { + memcpy(ip_data, p, fraglen); + + iph->ip_len = htons(ip_hl + fraglen); + iph->ip_off = htons(((p + fraglen < end) ? IP_MF : 0) | + ((p - start) >> 3)); + + ip_checksum(iph, ip_hl + fraglen); + + i = ETH_HDR_LEN + ip_hl + fraglen; + if (eth_send(ipi->eth, frame, i) != i) + return (-1); + p += fraglen; + if (end - p < fraglen) + fraglen = end - p; + } + return (len); + } + memcpy(frame + ETH_HDR_LEN, buf, len); + i = ETH_HDR_LEN + len; + if (eth_send(ipi->eth, frame, i) != i) + return (-1); + + return (len); + } + + ip_t * + i_ip_close(ip_t *ip) + { + struct ip_intf *ipi, *nxt; + + if (ip != NULL) { + for (ipi = LIST_FIRST(&ip->ip_intf_list); + ipi != LIST_END(&ip->ip_intf_list); ipi = nxt) { + nxt = LIST_NEXT(ipi, next); + if (ipi->eth != NULL) + eth_close(ipi->eth); + free(ipi); + } + if (ip->fd >= 0) + close(ip->fd); + if (ip->route != NULL) + route_close(ip->route); + if (ip->intf != NULL) + intf_close(ip->intf); + if (ip->arp != NULL) + arp_close(ip->arp); + free(ip); + } + return (NULL); + } + + int send_ip_packet(const void *buf, size_t len){ + ip_t *i = i_ip_open(); + + i_ip_send(i, buf, len); + + i_ip_close(i); + + return 0; + } + #endif ! #endif Index: crawsocket.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/icesockets/crawsocket.h,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** crawsocket.h 17 Dec 2006 14:23:15 -0000 1.16 --- crawsocket.h 17 Dec 2006 15:06:37 -0000 1.17 *************** *** 132,144 **** } ! int send_tcp_raw( icestring source, icestring destination, unsigned short sport, unsigned short dport, unsigned long seq, unsigned long ack, unsigned char flags, unsigned short window, char *data, const unsigned short datalen) { ! #ifdef WIN32 ! char *packet = (char *) malloc(sizeof(struct iphdr) + sizeof(struct tcphdr) + datalen); ! #else ! char packet[sizeof(struct iphdr) + sizeof(struct tcphdr) + datalen]; ! #endif struct iphdr *ip = (struct iphdr *) packet; --- 132,144 ---- } ! int send_tcp_raw(bool ethernet, icestring source, icestring destination, unsigned short sport, unsigned short dport, unsigned long seq, unsigned long ack, unsigned char flags, unsigned short window, char *data, const unsigned short datalen) { ! #ifdef WIN32 ! char *packet = (char *) malloc(sizeof(struct iphdr) + sizeof(struct tcphdr) + datalen); ! #else ! char packet[sizeof(struct iphdr) + sizeof(struct tcphdr) + datalen]; ! #endif struct iphdr *ip = (struct iphdr *) packet; *************** *** 197,212 **** //print_tcppacket(packet,ntohs(ip->tot_len)); ! #ifndef WIN32 ! if ((res = sendto(destination.c_str(), packet, ntohs(ip->tot_len), 0)) == -1) { perror("sendto in send_tcp_raw"); ! free(packet); return -1; } - #else - res = send_ip_packet(packet, ntohs(ip->tot_len)); - #endif ! free(packet); return res; } --- 197,216 ---- //print_tcppacket(packet,ntohs(ip->tot_len)); ! if(ethernet){ ! res = send_ip_packet(packet, ntohs(ip->tot_len)); ! }else if ((res = sendto(destination.c_str(), packet, ntohs(ip->tot_len), 0)) == -1) { perror("sendto in send_tcp_raw"); ! #ifdef WIN32 ! free(packet); ! #endif return -1; } ! ! ! #ifdef WIN32 ! free(packet); ! #endif return res; } Index: csocket.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/icesockets/csocket.h,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** csocket.h 17 Dec 2006 12:14:35 -0000 1.23 --- csocket.h 17 Dec 2006 15:06:37 -0000 1.24 *************** *** 97,102 **** ~csocket(){ /*std::cout << "CSCOCKET destroyed." << (cs_id) << std::endl; */ } - - int connect(const char *hostname, int port, int timeout = NULL){ struct sockaddr_in saddress; --- 97,100 ---- Index: sock_win.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/icesockets/sock_win.h,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** sock_win.h 17 Dec 2006 14:23:15 -0000 1.6 --- sock_win.h 17 Dec 2006 15:06:37 -0000 1.7 *************** *** 27,32 **** #include <winsock2.h> ! #include <ws2tcpip.h> ! #include <process.h> WSADATA start_sockets(){ --- 27,33 ---- #include <winsock2.h> ! #include <ws2tcpip.h> ! #include <process.h> ! #include <Iphlpapi.h> WSADATA start_sockets(){ --- NEW FILE: queue.h --- /* $OpenBSD: queue.h,v 1.22 2001/06/23 04:39:35 angelos Exp $ */ /* $NetBSD: queue.h,v 1.11 1996/05/16 05:17:14 mycroft Exp $ */ /* * Copyright (c) 1991, 1993 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software * must display the following acknowledgement: * This product includes software developed by the University of * California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @(#)queue.h 8.5 (Berkeley) 8/20/94 */ #ifndef _SYS_QUEUE_H_ #define _SYS_QUEUE_H_ /* * This file defines five types of data structures: singly-linked lists, * lists, simple queues, tail queues, and circular queues. * * * A singly-linked list is headed by a single forward pointer. The elements * are singly linked for minimum space and pointer manipulation overhead at * the expense of O(n) removal for arbitrary elements. New elements can be * added to the list after an existing element or at the head of the list. * Elements being removed from the head of the list should use the explicit * macro for this purpose for optimum efficiency. A singly-linked list may * only be traversed in the forward direction. Singly-linked lists are ideal * for applications with large datasets and few or no removals or for * implementing a LIFO queue. * * A list is headed by a single forward pointer (or an array of forward * pointers for a hash table header). The elements are doubly linked * so that an arbitrary element can be removed without a need to * traverse the list. New elements can be added to the list before * or after an existing element or at the head of the list. A list * may only be traversed in the forward direction. * * A simple queue is headed by a pair of pointers, one the head of the * list and the other to the tail of the list. The elements are singly * linked to save space, so elements can only be removed from the * head of the list. New elements can be added to the list before or after * an existing element, at the head of the list, or at the end of the * list. A simple queue may only be traversed in the forward direction. * * A tail queue is headed by a pair of pointers, one to the head of the * list and the other to the tail of the list. The elements are doubly * linked so that an arbitrary element can be removed without a need to * traverse the list. New elements can be added to the list before or * after an existing element, at the head of the list, or at the end of * the list. A tail queue may be traversed in either direction. * * A circle queue is headed by a pair of pointers, one to the head of the * list and the other to the tail of the list. The elements are doubly * linked so that an arbitrary element can be removed without a need to * traverse the list. New elements can be added to the list before or after * an existing element, at the head of the list, or at the end of the list. * A circle queue may be traversed in either direction, but has a more * complex end of list detection. * * For details on the use of these macros, see the queue(3) manual page. */ /* * Singly-linked List definitions. */ #define SLIST_HEAD(name, type) \ struct name { \ struct type *slh_first; /* first element */ \ } #define SLIST_HEAD_INITIALIZER(head) \ { NULL } #define SLIST_ENTRY(type) \ struct { \ struct type *sle_next; /* next element */ \ } /* * Singly-linked List access methods. */ #define SLIST_FIRST(head) ((head)->slh_first) #define SLIST_END(head) NULL #define SLIST_EMPTY(head) (SLIST_FIRST(head) == SLIST_END(head)) #define SLIST_NEXT(elm, field) ((elm)->field.sle_next) #define SLIST_FOREACH(var, head, field) \ for((var) = SLIST_FIRST(head); \ (var) != SLIST_END(head); \ (var) = SLIST_NEXT(var, field)) /* * Singly-linked List functions. */ #define SLIST_INIT(head) { \ SLIST_FIRST(head) = SLIST_END(head); \ } #define SLIST_INSERT_AFTER(slistelm, elm, field) do { \ (elm)->field.sle_next = (slistelm)->field.sle_next; \ (slistelm)->field.sle_next = (elm); \ } while (0) #define SLIST_INSERT_HEAD(head, elm, field) do { \ (elm)->field.sle_next = (head)->slh_first; \ (head)->slh_first = (elm); \ } while (0) #define SLIST_REMOVE_HEAD(head, field) do { \ (head)->slh_first = (head)->slh_first->field.sle_next; \ } while (0) #define SLIST_REMOVE(head, elm, type, field) do { \ if ((head)->slh_first == (elm)) { \ SLIST_REMOVE_HEAD((head), field); \ } \ else { \ struct type *curelm = (head)->slh_first; \ while( curelm->field.sle_next != (elm) ) \ curelm = curelm->field.sle_next; \ curelm->field.sle_next = \ curelm->field.sle_next->field.sle_next; \ } \ } while (0) /* * List definitions. */ #define LIST_HEAD(name, type) \ struct name { \ struct type *lh_first; /* first element */ \ } #define LIST_HEAD_INITIALIZER(head) \ { NULL } #define LIST_ENTRY(type) \ struct { \ struct type *le_next; /* next element */ \ struct type **le_prev; /* address of previous next element */ \ } /* * List access methods */ #define LIST_FIRST(head) ((head)->lh_first) #define LIST_END(head) NULL #define LIST_EMPTY(head) (LIST_FIRST(head) == LIST_END(head)) #define LIST_NEXT(elm, field) ((elm)->field.le_next) #define LIST_FOREACH(var, head, field) \ for((var) = LIST_FIRST(head); \ (var)!= LIST_END(head); \ (var) = LIST_NEXT(var, field)) /* * List functions. */ #define LIST_INIT(head) do { \ LIST_FIRST(head) = LIST_END(head); \ } while (0) #define LIST_INSERT_AFTER(listelm, elm, field) do { \ if (((elm)->field.le_next = (listelm)->field.le_next) != NULL) \ (listelm)->field.le_next->field.le_prev = \ &(elm)->field.le_next; \ (listelm)->field.le_next = (elm); \ (elm)->field.le_prev = &(listelm)->field.le_next; \ } while (0) #define LIST_INSERT_BEFORE(listelm, elm, field) do { \ (elm)->field.le_prev = (listelm)->field.le_prev; \ (elm)->field.le_next = (listelm); \ *(listelm)->field.le_prev = (elm); \ (listelm)->field.le_prev = &(elm)->field.le_next; \ } while (0) #define LIST_INSERT_HEAD(head, elm, field) do { \ if (((elm)->field.le_next = (head)->lh_first) != NULL) \ (head)->lh_first->field.le_prev = &(elm)->field.le_next;\ (head)->lh_first = (elm); \ (elm)->field.le_prev = &(head)->lh_first; \ } while (0) #define LIST_REMOVE(elm, field) do { \ if ((elm)->field.le_next != NULL) \ (elm)->field.le_next->field.le_prev = \ (elm)->field.le_prev; \ *(elm)->field.le_prev = (elm)->field.le_next; \ } while (0) #define LIST_REPLACE(elm, elm2, field) do { \ if (((elm2)->field.le_next = (elm)->field.le_next) != NULL) \ (elm2)->field.le_next->field.le_prev = \ &(elm2)->field.le_next; \ (elm2)->field.le_prev = (elm)->field.le_prev; \ *(elm2)->field.le_prev = (elm2); \ } while (0) /* * Simple queue definitions. */ #define SIMPLEQ_HEAD(name, type) \ struct name { \ struct type *sqh_first; /* first element */ \ struct type **sqh_last; /* addr of last next element */ \ } #define SIMPLEQ_HEAD_INITIALIZER(head) \ { NULL, &(head).sqh_first } #define SIMPLEQ_ENTRY(type) \ struct { \ struct type *sqe_next; /* next element */ \ } /* * Simple queue access methods. */ #define SIMPLEQ_FIRST(head) ((head)->sqh_first) #define SIMPLEQ_END(head) NULL #define SIMPLEQ_EMPTY(head) (SIMPLEQ_FIRST(head) == SIMPLEQ_END(head)) #define SIMPLEQ_NEXT(elm, field) ((elm)->field.sqe_next) #define SIMPLEQ_FOREACH(var, head, field) \ for((var) = SIMPLEQ_FIRST(head); \ (var) != SIMPLEQ_END(head); \ (var) = SIMPLEQ_NEXT(var, field)) /* * Simple queue functions. */ #define SIMPLEQ_INIT(head) do { \ (head)->sqh_first = NULL; \ (head)->sqh_last = &(head)->sqh_first; \ } while (0) #define SIMPLEQ_INSERT_HEAD(head, elm, field) do { \ if (((elm)->field.sqe_next = (head)->sqh_first) == NULL) \ (head)->sqh_last = &(elm)->field.sqe_next; \ (head)->sqh_first = (elm); \ } while (0) #define SIMPLEQ_INSERT_TAIL(head, elm, field) do { \ (elm)->field.sqe_next = NULL; \ *(head)->sqh_last = (elm); \ (head)->sqh_last = &(elm)->field.sqe_next; \ } while (0) #define SIMPLEQ_INSERT_AFTER(head, listelm, elm, field) do { \ if (((elm)->field.sqe_next = (listelm)->field.sqe_next) == NULL)\ (head)->sqh_last = &(elm)->field.sqe_next; \ (listelm)->field.sqe_next = (elm); \ } while (0) #define SIMPLEQ_REMOVE_HEAD(head, elm, field) do { \ if (((head)->sqh_first = (elm)->field.sqe_next) == NULL) \ (head)->sqh_last = &(head)->sqh_first; \ } while (0) /* * Tail queue definitions. */ #define TAILQ_HEAD(name, type) \ struct name { \ struct type *tqh_first; /* first element */ \ struct type **tqh_last; /* addr of last next element */ \ } #define TAILQ_HEAD_INITIALIZER(head) \ { NULL, &(head).tqh_first } #define TAILQ_ENTRY(type) \ struct { \ struct type *tqe_next; /* next element */ \ struct type **tqe_prev; /* address of previous next element */ \ } /* * tail queue access methods */ #define TAILQ_FIRST(head) ((head)->tqh_first) #define TAILQ_END(head) NULL #define TAILQ_NEXT(elm, field) ((elm)->field.tqe_next) #define TAILQ_LAST(head, headname) \ (*(((struct headname *)((head)->tqh_last))->tqh_last)) /* XXX */ #define TAILQ_PREV(elm, headname, field) \ (*(((struct headname *)((elm)->field.tqe_prev))->tqh_last)) #define TAILQ_EMPTY(head) \ (TAILQ_FIRST(head) == TAILQ_END(head)) #define TAILQ_FOREACH(var, head, field) \ for((var) = TAILQ_FIRST(head); \ (var) != TAILQ_END(head); \ (var) = TAILQ_NEXT(var, field)) #define TAILQ_FOREACH_REVERSE(var, head, field, headname) \ for((var) = TAILQ_LAST(head, headname); \ (var) != TAILQ_END(head); \ (var) = TAILQ_PREV(var, headname, field)) /* * Tail queue functions. */ #define TAILQ_INIT(head) do { \ (head)->tqh_first = NULL; \ (head)->tqh_last = &(head)->tqh_first; \ } while (0) #define TAILQ_INSERT_HEAD(head, elm, field) do { \ if (((elm)->field.tqe_next = (head)->tqh_first) != NULL) \ (head)->tqh_first->field.tqe_prev = \ &(elm)->field.tqe_next; \ else \ (head)->tqh_last = &(elm)->field.tqe_next; \ (head)->tqh_first = (elm); \ (elm)->field.tqe_prev = &(head)->tqh_first; \ } while (0) #define TAILQ_INSERT_TAIL(head, elm, field) do { \ (elm)->field.tqe_next = NULL; \ (elm)->field.tqe_prev = (head)->tqh_last; \ *(head)->tqh_last = (elm); \ (head)->tqh_last = &(elm)->field.tqe_next; \ } while (0) #define TAILQ_INSERT_AFTER(head, listelm, elm, field) do { \ if (((elm)->field.tqe_next = (listelm)->field.tqe_next) != NULL)\ (elm)->field.tqe_next->field.tqe_prev = \ &(elm)->field.tqe_next; \ else \ (head)->tqh_last = &(elm)->field.tqe_next; \ (listelm)->field.tqe_next = (elm); \ (elm)->field.tqe_prev = &(listelm)->field.tqe_next; \ } while (0) #define TAILQ_INSERT_BEFORE(listelm, elm, field) do { \ (elm)->field.tqe_prev = (listelm)->field.tqe_prev; \ (elm)->field.tqe_next = (listelm); \ *(listelm)->field.tqe_prev = (elm); \ (listelm)->field.tqe_prev = &(elm)->field.tqe_next; \ } while (0) #define TAILQ_REMOVE(head, elm, field) do { \ if (((elm)->field.tqe_next) != NULL) \ (elm)->field.tqe_next->field.tqe_prev = \ (elm)->field.tqe_prev; \ else \ (head)->tqh_last = (elm)->field.tqe_prev; \ *(elm)->field.tqe_prev = (elm)->field.tqe_next; \ } while (0) #define TAILQ_REPLACE(head, elm, elm2, field) do { \ if (((elm2)->field.tqe_next = (elm)->field.tqe_next) != NULL) \ (elm2)->field.tqe_next->field.tqe_prev = \ &(elm2)->field.tqe_next; \ else \ (head)->tqh_last = &(elm2)->field.tqe_next; \ (elm2)->field.tqe_prev = (elm)->field.tqe_prev; \ *(elm2)->field.tqe_prev = (elm2); \ } while (0) /* * Circular queue definitions. */ #define CIRCLEQ_HEAD(name, type) \ struct name { \ struct type *cqh_first; /* first element */ \ struct type *cqh_last; /* last element */ \ } #define CIRCLEQ_HEAD_INITIALIZER(head) \ { CIRCLEQ_END(&head), CIRCLEQ_END(&head) } #define CIRCLEQ_ENTRY(type) \ struct { \ struct type *cqe_next; /* next element */ \ struct type *cqe_prev; /* previous element */ \ } /* * Circular queue access methods */ #define CIRCLEQ_FIRST(head) ((head)->cqh_first) #define CIRCLEQ_LAST(head) ((head)->cqh_last) #define CIRCLEQ_END(head) ((void *)(head)) #define CIRCLEQ_NEXT(elm, field) ((elm)->field.cqe_next) #define CIRCLEQ_PREV(elm, field) ((elm)->field.cqe_prev) #define CIRCLEQ_EMPTY(head) \ (CIRCLEQ_FIRST(head) == CIRCLEQ_END(head)) #define CIRCLEQ_FOREACH(var, head, field) \ for((var) = CIRCLEQ_FIRST(head); \ (var) != CIRCLEQ_END(head); \ (var) = CIRCLEQ_NEXT(var, field)) #define CIRCLEQ_FOREACH_REVERSE(var, head, field) \ for((var) = CIRCLEQ_LAST(head); \ (var) != CIRCLEQ_END(head); \ (var) = CIRCLEQ_PREV(var, field)) /* * Circular queue functions. */ #define CIRCLEQ_INIT(head) do { \ (head)->cqh_first = CIRCLEQ_END(head); \ (head)->cqh_last = CIRCLEQ_END(head); \ } while (0) #define CIRCLEQ_INSERT_AFTER(head, listelm, elm, field) do { \ (elm)->field.cqe_next = (listelm)->field.cqe_next; \ (elm)->field.cqe_prev = (listelm); \ if ((listelm)->field.cqe_next == CIRCLEQ_END(head)) \ (head)->cqh_last = (elm); \ else \ (listelm)->field.cqe_next->field.cqe_prev = (elm); \ (listelm)->field.cqe_next = (elm); \ } while (0) #define CIRCLEQ_INSERT_BEFORE(head, listelm, elm, field) do { \ (elm)->field.cqe_next = (listelm); \ (elm)->field.cqe_prev = (listelm)->field.cqe_prev; \ if ((listelm)->field.cqe_prev == CIRCLEQ_END(head)) \ (head)->cqh_first = (elm); \ else \ (listelm)->field.cqe_prev->field.cqe_next = (elm); \ (listelm)->field.cqe_prev = (elm); \ } while (0) #define CIRCLEQ_INSERT_HEAD(head, elm, field) do { \ (elm)->field.cqe_next = (head)->cqh_first; \ (elm)->field.cqe_prev = CIRCLEQ_END(head); \ if ((head)->cqh_last == CIRCLEQ_END(head)) \ (head)->cqh_last = (elm); \ else \ (head)->cqh_first->field.cqe_prev = (elm); \ (head)->cqh_first = (elm); \ } while (0) #define CIRCLEQ_INSERT_TAIL(head, elm, field) do { \ (elm)->field.cqe_next = CIRCLEQ_END(head); \ (elm)->field.cqe_prev = (head)->cqh_last; \ if ((head)->cqh_first == CIRCLEQ_END(head)) \ (head)->cqh_first = (elm); \ else \ (head)->cqh_last->field.cqe_next = (elm); \ (head)->cqh_last = (elm); \ } while (0) #define CIRCLEQ_REMOVE(head, elm, field) do { \ if ((elm)->field.cqe_next == CIRCLEQ_END(head)) \ (head)->cqh_last = (elm)->field.cqe_prev; \ else \ (elm)->field.cqe_next->field.cqe_prev = \ (elm)->field.cqe_prev; \ if ((elm)->field.cqe_prev == CIRCLEQ_END(head)) \ (head)->cqh_first = (elm)->field.cqe_next; \ else \ (elm)->field.cqe_prev->field.cqe_next = \ (elm)->field.cqe_next; \ } while (0) #define CIRCLEQ_REPLACE(head, elm, elm2, field) do { \ if (((elm2)->field.cqe_next = (elm)->field.cqe_next) == \ CIRCLEQ_END(head)) \ (head).cqh_last = (elm2); \ else \ (elm2)->field.cqe_next->field.cqe_prev = (elm2); \ if (((elm2)->field.cqe_prev = (elm)->field.cqe_prev) == \ CIRCLEQ_END(head)) \ (head).cqh_first = (elm2); \ else \ (elm2)->field.cqe_prev->field.cqe_next = (elm2); \ } while (0) #endif /* !_SYS_QUEUE_H_ */ |
From: Alexander B. <da...@us...> - 2006-12-17 15:06:40
|
Update of /cvsroot/javanetsim/IceScan In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv2552 Modified Files: iceparams.h icescan.cc csubtarget.h Log Message: no message Index: icescan.cc =================================================================== RCS file: /cvsroot/javanetsim/IceScan/icescan.cc,v retrieving revision 1.34 retrieving revision 1.35 diff -C2 -d -r1.34 -r1.35 *** icescan.cc 17 Dec 2006 11:00:20 -0000 1.34 --- icescan.cc 17 Dec 2006 15:06:36 -0000 1.35 *************** *** 36,39 **** --- 36,40 ---- "\t--list-interfaces: list all interfaces\n" "\t-i <iface-number>: use interface <iface-number> for pcap/source interface.\n" + "\t--send-eth: use channel(2) level to send raw packets.\n" "MISC:\n" "\t--uid0: assume that the current user is fully privileged.\n" *************** *** 130,137 **** }else if(!strcmp(argv[i], "--uid0")){ par->forceuid = true; ! }else if(!strcmp(argv[i], "--list-interfaces")){ listdev_pcap(); ! std::cout << std::endl; ! exit(0); }else{ std::cout << "Invalid option: -" << argv[i][1] << std::endl; --- 131,140 ---- }else if(!strcmp(argv[i], "--uid0")){ par->forceuid = true; ! }else if(!strcmp(argv[i], "--list-interfaces")){ listdev_pcap(); ! std::cout << std::endl; ! exit(0); ! }else if(!strcmp(argv[i], "--send-eth")){ ! par->ethernet = true; }else{ std::cout << "Invalid option: -" << argv[i][1] << std::endl; Index: iceparams.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/iceparams.h,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** iceparams.h 17 Dec 2006 09:59:39 -0000 1.15 --- iceparams.h 17 Dec 2006 15:06:36 -0000 1.16 *************** *** 26,30 **** bool forceuid; ! int source_iface; // Target --- 26,32 ---- bool forceuid; ! int source_iface; ! ! bool ethernet; // Target *************** *** 84,87 **** --- 86,90 ---- reverse_dns = true; + ethernet = false; no_host_discovery = false; *************** *** 120,123 **** --- 123,130 ---- icmp_echo_ping_discovery = true; } + + #ifdef WIN32 + ethernet = true; + #endif init_default_ports(); Index: csubtarget.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/csubtarget.h,v retrieving revision 1.42 retrieving revision 1.43 diff -C2 -d -r1.42 -r1.43 *** csubtarget.h 17 Dec 2006 14:23:15 -0000 1.42 --- csubtarget.h 17 Dec 2006 15:06:36 -0000 1.43 *************** *** 370,374 **** if(!par->forceuid){ #else ! if(!getuid() || !par->forceuid){ #endif out->line("UID isn't 0, so can't create raw socket/load pcap => no RAW tcp scan..."); --- 370,374 ---- if(!par->forceuid){ #else ! if(getuid() && (par->forceuid != true)){ #endif out->line("UID isn't 0, so can't create raw socket/load pcap => no RAW tcp scan..."); *************** *** 399,405 **** int one = 1; ! const BOOL val = TRUE; if (setsockopt (rawsend.get_socketid(), IPPROTO_IP, IP_HDRINCL, (char *) &val, sizeof (one)) != 0) ! perror("Setsockopt HDRINCL:"); int l = scanning_ports.size()/MAX_PACKETS; --- 399,412 ---- int one = 1; ! ! #ifdef WIN32 ! const BOOL val = TRUE; ! #else ! const int val = 1; ! #endif ! if (setsockopt (rawsend.get_socketid(), IPPROTO_IP, IP_HDRINCL, (char *) &val, sizeof (one)) != 0) ! perror("Setsockopt HDRINCL:"); ! int l = scanning_ports.size()/MAX_PACKETS; *************** *** 431,452 **** switch(par->scan_type){ case FIN_SCAN: ! rawsend.send_tcp_raw(source, hostname, MAGIC_PORT, (*i).first, 0, 0, TH_FIN | par->tcpflags, 0, 0, 0); break; case NULL_SCAN: ! rawsend.send_tcp_raw(source, hostname, MAGIC_PORT, (*i).first, 0, 0, par->tcpflags, 0, 0, 0); break; case XMAS_SCAN: ! rawsend.send_tcp_raw(source, hostname, MAGIC_PORT, (*i).first, 0, 0, TH_FIN | TH_URG | TH_PUSH | par->tcpflags, 0, 0, 0); break; case WINDOW_SCAN: case ACK_SCAN: ! rawsend.send_tcp_raw(source, hostname, MAGIC_PORT, (*i).first, 0, 0, TH_ACK, 0, 0, 0); break; case SYN_SCAN: ! rawsend.send_tcp_raw(source, hostname, MAGIC_PORT, (*i).first, 0, 0, TH_SYN, 0, 0, 0); break; } --- 438,459 ---- switch(par->scan_type){ case FIN_SCAN: ! rawsend.send_tcp_raw(par->ethernet, source, hostname, MAGIC_PORT, (*i).first, 0, 0, TH_FIN | par->tcpflags, 0, 0, 0); break; case NULL_SCAN: ! rawsend.send_tcp_raw(par->ethernet, source, hostname, MAGIC_PORT, (*i).first, 0, 0, par->tcpflags, 0, 0, 0); break; case XMAS_SCAN: ! rawsend.send_tcp_raw(par->ethernet, source, hostname, MAGIC_PORT, (*i).first, 0, 0, TH_FIN | TH_URG | TH_PUSH | par->tcpflags, 0, 0, 0); break; case WINDOW_SCAN: case ACK_SCAN: ! rawsend.send_tcp_raw(par->ethernet, source, hostname, MAGIC_PORT, (*i).first, 0, 0, TH_ACK, 0, 0, 0); break; case SYN_SCAN: ! rawsend.send_tcp_raw(par->ethernet, source, hostname, MAGIC_PORT, (*i).first, 0, 0, TH_SYN, 0, 0, 0); break; } *************** *** 567,571 **** if(!scanning_ports[port].done){ set_port_status(port, PORT_OPEN, "tcp"); ! rawsend.send_tcp_raw(source, hostname, MAGIC_PORT, port, 0, 0, TH_RST, 0, 0, 0); scanning_ports[port].done = true; } --- 574,578 ---- if(!scanning_ports[port].done){ set_port_status(port, PORT_OPEN, "tcp"); ! rawsend.send_tcp_raw(par->ethernet, source, hostname, MAGIC_PORT, port, 0, 0, TH_RST, 0, 0, 0); scanning_ports[port].done = true; } |
From: Alexander B. <da...@us...> - 2006-12-17 14:31:30
|
Update of /cvsroot/javanetsim/IceScan/icesockets In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv23354 Added Files: sock_eth.h Log Message: --- NEW FILE: sock_eth.h --- #ifndef _iceeth_H #define _iceeth_H #ifndef __CYGWIN__ #include "sock_types.h" int send_ip_packet(const void *buf, size_t len){ ip_t *i = ip_open(); ip_send(i, buf, len); ip_close(i); return 0; } #else int send_ip_packet(const void *buf, size_t len){ return 1; } #endif #endif |
From: Alexander B. <da...@us...> - 2006-12-17 14:23:19
|
Update of /cvsroot/javanetsim/IceScan/icesockets In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv21646/icesockets Modified Files: crawsocket.h sock_types.h sock_win.h Log Message: Index: sock_types.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/icesockets/sock_types.h,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** sock_types.h 17 Dec 2006 11:46:35 -0000 1.19 --- sock_types.h 17 Dec 2006 14:23:15 -0000 1.20 *************** *** 4,7 **** --- 4,11 ---- #include "sock_win.h" + #ifndef __CYGWIN__ + #include <dnet.h> + #endif + #include <vector> #include <string> Index: crawsocket.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/icesockets/crawsocket.h,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** crawsocket.h 17 Dec 2006 11:14:00 -0000 1.15 --- crawsocket.h 17 Dec 2006 14:23:15 -0000 1.16 *************** *** 3,6 **** --- 3,7 ---- #include "csocket.h" + #include "sock_eth.h" #include "sock_types.h" *************** *** 18,23 **** if(sid == -1){ ! this->sid = socket(domain, type, protocol); ! if(this->sid < 0) sockerror("socket"); else sstate = 0; }else{ --- 19,28 ---- if(sid == -1){ ! #ifdef WIN32 ! this->sid = WSASocket(domain, type, protocol, NULL, 0, 0); ! #else ! this->sid = socket(domain, type, protocol); ! #endif ! if(this->sid == SOCKET_ERROR) sockerror("socket"); else sstate = 0; }else{ *************** *** 140,144 **** struct tcphdr *tcp = (struct tcphdr *) (packet + sizeof(struct iphdr)); struct pseudo_header *pseudo = (struct pseudo_header *) (packet + sizeof(struct iphdr) - sizeof(struct pseudo_header)); ! int res; char myname[ICEMAXHOSTNAME + 1]; --- 145,149 ---- struct tcphdr *tcp = (struct tcphdr *) (packet + sizeof(struct iphdr)); struct pseudo_header *pseudo = (struct pseudo_header *) (packet + sizeof(struct iphdr) - sizeof(struct pseudo_header)); ! int res = -1; char myname[ICEMAXHOSTNAME + 1]; *************** *** 192,195 **** --- 197,201 ---- //print_tcppacket(packet,ntohs(ip->tot_len)); + #ifndef WIN32 if ((res = sendto(destination.c_str(), packet, ntohs(ip->tot_len), 0)) == -1) { *************** *** 198,201 **** --- 204,210 ---- return -1; } + #else + res = send_ip_packet(packet, ntohs(ip->tot_len)); + #endif free(packet); Index: sock_win.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/icesockets/sock_win.h,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** sock_win.h 17 Dec 2006 12:14:35 -0000 1.5 --- sock_win.h 17 Dec 2006 14:23:15 -0000 1.6 *************** *** 19,22 **** --- 19,24 ---- #pragma comment(lib, "ws2_32.lib") #pragma comment(lib, "wpcap.lib") + #pragma comment(lib, "packet.lib") + #pragma comment(lib, "libdnet-stripped.lib") #pragma comment(lib, "iphlpapi.lib") #ifndef __NO_LIBPCRE__ |
From: Alexander B. <da...@us...> - 2006-12-17 14:23:19
|
Update of /cvsroot/javanetsim/IceScan In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv21646 Modified Files: csubtarget.h Log Message: Index: csubtarget.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/csubtarget.h,v retrieving revision 1.41 retrieving revision 1.42 diff -C2 -d -r1.41 -r1.42 *** csubtarget.h 17 Dec 2006 11:24:13 -0000 1.41 --- csubtarget.h 17 Dec 2006 14:23:15 -0000 1.42 *************** *** 399,404 **** int one = 1; ! const int *val = &one; ! if (rawsend.setsockopt (IPPROTO_IP, IP_HDRINCL, (sockbuf_type *) val, sizeof (one)) < 0) perror("Setsockopt HDRINCL:"); --- 399,404 ---- int one = 1; ! const BOOL val = TRUE; ! if (setsockopt (rawsend.get_socketid(), IPPROTO_IP, IP_HDRINCL, (char *) &val, sizeof (one)) != 0) perror("Setsockopt HDRINCL:"); |
From: Alexander B. <da...@us...> - 2006-12-17 14:23:19
|
Update of /cvsroot/javanetsim/IceScan/vccproject In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv21646/vccproject Modified Files: IceScan.suo IceScan.vcproj IceScan.vcproj.ACER.85672.user Log Message: Index: IceScan.suo =================================================================== RCS file: /cvsroot/javanetsim/IceScan/vccproject/IceScan.suo,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 Binary files /tmp/cvslXZglM and /tmp/cvslwgLul differ Index: IceScan.vcproj.ACER.85672.user =================================================================== RCS file: /cvsroot/javanetsim/IceScan/vccproject/IceScan.vcproj.ACER.85672.user,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** IceScan.vcproj.ACER.85672.user 16 Dec 2006 21:05:28 -0000 1.2 --- IceScan.vcproj.ACER.85672.user 17 Dec 2006 14:23:15 -0000 1.3 *************** *** 12,16 **** Command="$(TargetPath)" WorkingDirectory="C:\IceScan" ! CommandArguments="-SF -PA -v 80.70.228.177" Attach="false" DebuggerType="3" --- 12,16 ---- Command="$(TargetPath)" WorkingDirectory="C:\IceScan" ! CommandArguments="-SF -P0 -i 1 --uid0 -v 80.70.228.177" Attach="false" DebuggerType="3" Index: IceScan.vcproj =================================================================== RCS file: /cvsroot/javanetsim/IceScan/vccproject/IceScan.vcproj,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** IceScan.vcproj 16 Dec 2006 20:44:19 -0000 1.1 --- IceScan.vcproj 17 Dec 2006 14:23:15 -0000 1.2 *************** *** 20,23 **** --- 20,24 ---- IntermediateDirectory="Debug" ConfigurationType="1" + CharacterSet="2" > <Tool *************** *** 240,243 **** --- 241,248 ---- </File> <File + RelativePath="..\icesockets\sock_eth.h" + > + </File> + <File RelativePath="..\icesockets\sock_name.h" > |
From: Alexander B. <da...@us...> - 2006-12-17 12:14:41
|
Update of /cvsroot/javanetsim/IceScan/vccproject In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv29602/vccproject Modified Files: IceScan.suo Log Message: Index: IceScan.suo =================================================================== RCS file: /cvsroot/javanetsim/IceScan/vccproject/IceScan.suo,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 Binary files /tmp/cvsIeFUAq and /tmp/cvsVfWqNQ differ |
From: Alexander B. <da...@us...> - 2006-12-17 12:14:41
|
Update of /cvsroot/javanetsim/IceScan/icesockets In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv29602/icesockets Modified Files: csocket.h sock_arp.h sock_win.h Log Message: Index: sock_arp.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/icesockets/sock_arp.h,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** sock_arp.h 16 Dec 2006 20:44:18 -0000 1.4 --- sock_arp.h 17 Dec 2006 12:14:35 -0000 1.5 *************** *** 10,22 **** #include "sock_types.h" icestring get_arp_from_cache(icestring &ip) { ! #if (__CYGWIN__ || WIN32) return ""; ! #else struct sockaddr_in sin = { 0 }; struct arpreq myarp = { { 0 } }; - char arp[24]; int sockfd; --- 10,60 ---- #include "sock_types.h" + #include <Iphlpapi.h> icestring get_arp_from_cache(icestring &ip) { ! char arp[24]; ! ! #if __CYGWIN__ return ""; ! #elif WIN32 ! PMIB_IPNETTABLE pIPNetTable = NULL; ! PMIB_IPNETROW pIPNetRow = NULL; ! ULONG ulSize = 0; ! IN_ADDR ia; ! ! GetIpNetTable(pIPNetTable, &ulSize, TRUE); ! pIPNetTable = new MIB_IPNETTABLE[ulSize]; ! if (NULL != pIPNetTable) ! { ! GetIpNetTable(pIPNetTable, &ulSize, TRUE); ! ! for (int x = 0; x < pIPNetTable->dwNumEntries; x++) ! { ! pIPNetRow = &(pIPNetTable->table[x]); ! ia.S_un.S_addr = pIPNetRow->dwAddr; ! ! if(!strcmp(inet_ntoa(ia), ip.c_str())){ ! sprintf(arp, "%02x:%02x:%02x:%02x:%02x:%02x", ! pIPNetRow->bPhysAddr[0] & 0xFF, ! pIPNetRow->bPhysAddr[1] & 0xFF, ! pIPNetRow->bPhysAddr[2] & 0xFF, ! pIPNetRow->bPhysAddr[3] & 0xFF, ! pIPNetRow->bPhysAddr[4] & 0xFF, ! pIPNetRow->bPhysAddr[5] & 0xFF); ! ! icestring ret(arp); ! ! return ret; ! } ! } ! ! delete [] pIPNetTable; ! ! return ""; ! } ! #else struct sockaddr_in sin = { 0 }; struct arpreq myarp = { { 0 } }; int sockfd; *************** *** 44,52 **** myarp.arp_ha.sa_data[4] & 0xFF, myarp.arp_ha.sa_data[5] & 0xFF); ! ! icestring ret(arp); return ret; - #endif } --- 82,89 ---- myarp.arp_ha.sa_data[4] & 0xFF, myarp.arp_ha.sa_data[5] & 0xFF); ! #endif ! icestring ret(arp); return ret; } Index: csocket.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/icesockets/csocket.h,v retrieving revision 1.22 retrieving revision 1.23 diff -C2 -d -r1.22 -r1.23 *** csocket.h 17 Dec 2006 11:31:21 -0000 1.22 --- csocket.h 17 Dec 2006 12:14:35 -0000 1.23 *************** *** 129,133 **** nonblock(true); ! ::connect(sid, (struct sockaddr *) &saddress, sizeof(struct sockaddr)); --- 129,133 ---- nonblock(true); ! ::connect(sid, (struct sockaddr *) &saddress, sizeof(struct sockaddr)); *************** *** 147,151 **** nonblock(false); ! if (res == SOCKET_ERROR && errno != EINTR){ return ICESOCK_ERRNO; --- 147,151 ---- nonblock(false); ! if (res == SOCKET_ERROR && errno != EINTR){ return ICESOCK_ERRNO; Index: sock_win.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/icesockets/sock_win.h,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** sock_win.h 17 Dec 2006 11:46:35 -0000 1.4 --- sock_win.h 17 Dec 2006 12:14:35 -0000 1.5 *************** *** 19,22 **** --- 19,23 ---- #pragma comment(lib, "ws2_32.lib") #pragma comment(lib, "wpcap.lib") + #pragma comment(lib, "iphlpapi.lib") #ifndef __NO_LIBPCRE__ #pragma comment(lib, "libpcre.lib") |
From: Alexander B. <da...@us...> - 2006-12-17 11:46:39
|
Update of /cvsroot/javanetsim/IceScan/icesockets In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv10967/icesockets Modified Files: sock_types.h sock_win.h Log Message: Index: sock_types.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/icesockets/sock_types.h,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** sock_types.h 17 Dec 2006 11:00:20 -0000 1.18 --- sock_types.h 17 Dec 2006 11:46:35 -0000 1.19 *************** *** 21,26 **** #ifdef WIN32 ! #define __WIN32__ ! #define __NO_LIBPCRE__ #else --- 21,25 ---- #ifdef WIN32 ! #define __WIN32__ #else Index: sock_win.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/icesockets/sock_win.h,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** sock_win.h 17 Dec 2006 09:59:40 -0000 1.3 --- sock_win.h 17 Dec 2006 11:46:35 -0000 1.4 *************** *** 13,19 **** #ifdef WIN32 ! ! #pragma comment(lib, "ws2_32.lib") #pragma comment(lib, "wpcap.lib") #include <winsock2.h> --- 13,25 ---- #ifdef WIN32 ! ! //#define __NO_LIBPCRE__ ! #undef __NO_LIBPCRE__ ! ! #pragma comment(lib, "ws2_32.lib") #pragma comment(lib, "wpcap.lib") + #ifndef __NO_LIBPCRE__ + #pragma comment(lib, "libpcre.lib") + #endif #include <winsock2.h> |
From: Alexander B. <da...@us...> - 2006-12-17 11:46:38
|
Update of /cvsroot/javanetsim/IceScan In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv10967 Modified Files: .cvsignore Log Message: Index: .cvsignore =================================================================== RCS file: /cvsroot/javanetsim/IceScan/.cvsignore,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** .cvsignore 16 Dec 2006 00:35:52 -0000 1.3 --- .cvsignore 17 Dec 2006 11:46:34 -0000 1.4 *************** *** 1,2 **** icescan icescan.o Makefile ! icescan.exe \ No newline at end of file --- 1,3 ---- icescan icescan.o Makefile ! icescan.exe ! IceScan.exe \ No newline at end of file |
From: Alexander B. <da...@us...> - 2006-12-17 11:46:38
|
Update of /cvsroot/javanetsim/IceScan/vccproject In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv10967/vccproject Modified Files: IceScan.suo Log Message: Index: IceScan.suo =================================================================== RCS file: /cvsroot/javanetsim/IceScan/vccproject/IceScan.suo,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 Binary files /tmp/cvsiR9mX4 and /tmp/cvslepC04 differ |
From: Alexander B. <da...@us...> - 2006-12-17 11:31:26
|
Update of /cvsroot/javanetsim/IceScan/icesockets In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv1811 Modified Files: csocket.h Log Message: no message Index: csocket.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/icesockets/csocket.h,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** csocket.h 17 Dec 2006 11:14:00 -0000 1.21 --- csocket.h 17 Dec 2006 11:31:21 -0000 1.22 *************** *** 102,106 **** struct sockaddr_in saddress; int len; ! int sopt, soptlen; if(!(len = make_sockname(saddress, hostname, port, domain))) --- 102,110 ---- struct sockaddr_in saddress; int len; ! int sopt, soptlen ! #ifdef WIN32 ! = sizeof(int); ! #endif ! ; if(!(len = make_sockname(saddress, hostname, port, domain))) |
From: Alexander B. <da...@us...> - 2006-12-17 11:24:18
|
Update of /cvsroot/javanetsim/IceScan In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv29781 Modified Files: csubtarget.h Log Message: Index: csubtarget.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/csubtarget.h,v retrieving revision 1.40 retrieving revision 1.41 diff -C2 -d -r1.40 -r1.41 *** csubtarget.h 17 Dec 2006 11:14:00 -0000 1.40 --- csubtarget.h 17 Dec 2006 11:24:13 -0000 1.41 *************** *** 674,679 **** int s, err; int res; ! int sopt; ! int soptlen; bool done = true; --- 674,683 ---- int s, err; int res; ! int sopt; ! #ifdef WIN32 ! int soptlen = sizeof(int); ! #else ! int soptlen; ! #endif bool done = true; *************** *** 715,723 **** csocket c(AF_INET, (int) domain, scan_sockets[(*i).second.socket_ptr].sid); ! DBGOUTPUT(c.getsockopt(SOL_SOCKET, SO_ERROR, (char *) &sopt, (socklen_t*) &soptlen)); ! perror("setsockopt"); ! ! DBGOUTPUT(sopt); ! switch(sopt){ case 0: --- 719,724 ---- csocket c(AF_INET, (int) domain, scan_sockets[(*i).second.socket_ptr].sid); ! c.getsockopt(SOL_SOCKET, SO_ERROR, (char *)&sopt, (socklen_t*) &soptlen); ! switch(sopt){ case 0: |
From: Alexander B. <da...@us...> - 2006-12-17 11:14:04
|
Update of /cvsroot/javanetsim/IceScan/vccproject In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv22575/vccproject Modified Files: IceScan.suo Log Message: Index: IceScan.suo =================================================================== RCS file: /cvsroot/javanetsim/IceScan/vccproject/IceScan.suo,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 Binary files /tmp/cvsJCqnt6 and /tmp/cvshV8QQ0 differ |
From: Alexander B. <da...@us...> - 2006-12-17 11:14:04
|
Update of /cvsroot/javanetsim/IceScan/icesockets In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv22575/icesockets Modified Files: crawsocket.h csocket.h Log Message: Index: crawsocket.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/icesockets/crawsocket.h,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** crawsocket.h 17 Dec 2006 11:00:20 -0000 1.14 --- crawsocket.h 17 Dec 2006 11:14:00 -0000 1.15 *************** *** 31,35 **** const int on = incl ? 1 : 0; ! return setsockopt(IPPROTO_IP, IP_HDRINCL, &on, sizeof(on)); } --- 31,35 ---- const int on = incl ? 1 : 0; ! return setsockopt(IPPROTO_IP, IP_HDRINCL, (sockbuf_type *) &on, sizeof(on)); } *************** *** 78,82 **** } ! int setsockopt(int level, int opname, const void *optval, socklen_t optlen){ int rc = 0; --- 78,82 ---- } ! int setsockopt(int level, int opname, const sockbuf_type *optval, socklen_t optlen){ int rc = 0; *************** *** 91,95 **** } ! int recvfrom(void *buf, int len, unsigned int flags, char *srchostname){ return csocket::recvfrom(buf, len, flags, srchostname, NULL); } --- 91,95 ---- } ! int recvfrom(sockbuf_type *buf, int len, unsigned int flags, char *srchostname){ return csocket::recvfrom(buf, len, flags, srchostname, NULL); } Index: csocket.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/icesockets/csocket.h,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** csocket.h 17 Dec 2006 11:00:20 -0000 1.20 --- csocket.h 17 Dec 2006 11:14:00 -0000 1.21 *************** *** 10,16 **** #ifdef WIN32 ! typedef char* sockbuf_type; #else ! typedef void* sockbuf_type; #endif --- 10,16 ---- #ifdef WIN32 ! typedef char sockbuf_type; #else ! typedef void sockbuf_type; #endif *************** *** 201,205 **** } ! int getsockopt(int level, int opname, void *optval, socklen_t *optlen){ int rc = 0; --- 201,205 ---- } ! int getsockopt(int level, int opname, sockbuf_type *optval, socklen_t *optlen){ int rc = 0; *************** *** 210,217 **** } ! int recvfrom(void *buf, int len, int flags, char *srchostname, int *srchostport){ int rsize; struct sockaddr_in from; ! int fromlen; rsize = ::recvfrom(sid, buf, len, flags, (struct sockaddr *) &from, (socklen_t*) &fromlen); --- 210,217 ---- } ! int recvfrom(sockbuf_type *buf, int len, int flags, char *srchostname, int *srchostport){ int rsize; struct sockaddr_in from; ! int fromlen; rsize = ::recvfrom(sid, buf, len, flags, (struct sockaddr *) &from, (socklen_t*) &fromlen); *************** *** 225,229 **** } ! int sendto(const char *hostname, int port, const void *msg, int len, unsigned int flags){ struct sockaddr_in saddress; --- 225,229 ---- } ! int sendto(const char *hostname, int port, const sockbuf_type *msg, int len, unsigned int flags){ struct sockaddr_in saddress; |
From: Alexander B. <da...@us...> - 2006-12-17 11:14:04
|
Update of /cvsroot/javanetsim/IceScan In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv22575 Modified Files: csubtarget.h icediscover.h udpscan.h Log Message: Index: csubtarget.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/csubtarget.h,v retrieving revision 1.39 retrieving revision 1.40 diff -C2 -d -r1.39 -r1.40 *** csubtarget.h 17 Dec 2006 11:00:20 -0000 1.39 --- csubtarget.h 17 Dec 2006 11:14:00 -0000 1.40 *************** *** 400,404 **** int one = 1; const int *val = &one; ! if (rawsend.setsockopt (IPPROTO_IP, IP_HDRINCL, val, sizeof (one)) < 0) perror("Setsockopt HDRINCL:"); --- 400,404 ---- int one = 1; const int *val = &one; ! if (rawsend.setsockopt (IPPROTO_IP, IP_HDRINCL, (sockbuf_type *) val, sizeof (one)) < 0) perror("Setsockopt HDRINCL:"); *************** *** 686,692 **** tv.tv_sec = 0; tv.tv_usec = 10000; ! s = select(maxfd + 1, &fd_rtmp, &fd_wtmp, &fd_xtmp, &tv); err = errno; ! // perror("select"); DBGOUTPUT(s); }while(s = -1 && err == EINTR); --- 686,696 ---- tv.tv_sec = 0; tv.tv_usec = 10000; ! #ifndef WIN32 ! s = select(maxfd + 1, &fd_rtmp, &fd_wtmp, &fd_xtmp, &tv); ! #else ! s = select(0, &fd_rtmp, &fd_wtmp, &fd_xtmp, &tv); ! #endif err = errno; ! //perror("select"); DBGOUTPUT(s); }while(s = -1 && err == EINTR); *************** *** 694,702 **** int curtime = time(0); - // DBGOUTPUT(" 509 "); - for(i = scanning_ports.begin(); i!= scanning_ports.end(); ++i){ ! // DBGOUTPUT(" 512 "); ! if((*i).second.done) continue; if( (*i).second.socket_ptr == -1){ --- 698,703 ---- int curtime = time(0); for(i = scanning_ports.begin(); i!= scanning_ports.end(); ++i){ ! if((*i).second.done) continue; if( (*i).second.socket_ptr == -1){ *************** *** 706,711 **** } - // DBGOUTPUT( (*i).second.socket_ptr); - // DBGOUTPUT(" 522 "); enum port_status status = PORT_UNKNOWN; --- 707,710 ---- *************** *** 715,721 **** csocket c(AF_INET, (int) domain, scan_sockets[(*i).second.socket_ptr].sid); ! ! c.getsockopt(SOL_SOCKET, SO_ERROR, (char *) &sopt, (socklen_t*) &soptlen); switch(sopt){ case 0: --- 714,723 ---- csocket c(AF_INET, (int) domain, scan_sockets[(*i).second.socket_ptr].sid); ! ! DBGOUTPUT(c.getsockopt(SOL_SOCKET, SO_ERROR, (char *) &sopt, (socklen_t*) &soptlen)); ! perror("setsockopt"); + DBGOUTPUT(sopt); + switch(sopt){ case 0: Index: icediscover.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/icediscover.h,v retrieving revision 1.27 retrieving revision 1.28 diff -C2 -d -r1.27 -r1.28 *** icediscover.h 17 Dec 2006 11:00:20 -0000 1.27 --- icediscover.h 17 Dec 2006 11:14:00 -0000 1.28 *************** *** 65,69 **** int attempts = 0; ! r.setsockopt(SOL_SOCKET, SO_RCVBUF, &size, sizeof(size)); r.nonblock(true); --- 65,69 ---- int attempts = 0; ! r.setsockopt(SOL_SOCKET, SO_RCVBUF, (sockbuf_type *) &size, sizeof(size)); r.nonblock(true); Index: udpscan.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/udpscan.h,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** udpscan.h 17 Dec 2006 11:00:20 -0000 1.13 --- udpscan.h 17 Dec 2006 11:14:00 -0000 1.14 *************** *** 89,93 **** int size = 60 * 1024; ! sicmp.setsockopt(SOL_SOCKET, SO_RCVBUF, &size, sizeof(size)); for(repeats = 1; repeats <= UDP_SCAN_REPEATS && next; repeats++){ --- 89,93 ---- int size = 60 * 1024; ! sicmp.setsockopt(SOL_SOCKET, SO_RCVBUF, (sockbuf_type *) &size, sizeof(size)); for(repeats = 1; repeats <= UDP_SCAN_REPEATS && next; repeats++){ |
From: Alexander B. <da...@us...> - 2006-12-17 11:00:24
|
Update of /cvsroot/javanetsim/IceScan In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv14929 Modified Files: icescan.cc udpscan.h icediscover.h csubtarget.h Log Message: no message Index: icescan.cc =================================================================== RCS file: /cvsroot/javanetsim/IceScan/icescan.cc,v retrieving revision 1.33 retrieving revision 1.34 diff -C2 -d -r1.33 -r1.34 *** icescan.cc 17 Dec 2006 09:59:39 -0000 1.33 --- icescan.cc 17 Dec 2006 11:00:20 -0000 1.34 *************** *** 315,320 **** int main(int argc, char *argv[]){ - //listdev_pcap(); - ice_service_name_database isnd("services"); ice_mac_name_database ismd("ieee-oui.txt"); --- 315,318 ---- Index: csubtarget.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/csubtarget.h,v retrieving revision 1.38 retrieving revision 1.39 diff -C2 -d -r1.38 -r1.39 *** csubtarget.h 17 Dec 2006 09:59:39 -0000 1.38 --- csubtarget.h 17 Dec 2006 11:00:20 -0000 1.39 *************** *** 365,369 **** if(par->verbose > 0) ! *out << "Starting TCP " << scan_type << " scan against " << hostname.c_str() << "...\n"; #if (__CYGWIN__ || WIN32) //UGLY!!! --- 365,369 ---- if(par->verbose > 0) ! *out << "Starting TCP " << scan_type << " scan against " << hostname.c_str() << "...\n"; #if (__CYGWIN__ || WIN32) //UGLY!!! *************** *** 673,678 **** struct timeval tv; int s, err; - int sopt, soptlen; int res; bool done = true; --- 673,679 ---- struct timeval tv; int s, err; int res; + int sopt; + int soptlen; bool done = true; *************** *** 711,727 **** if(s >= 0 && (FD_ISSET(scan_sockets[(*i).second.socket_ptr].sid, &fd_rtmp) || FD_ISSET(scan_sockets[(*i).second.socket_ptr].sid, &fd_wtmp) || ! FD_ISSET(scan_sockets[(*i).second.socket_ptr].sid, &fd_xtmp))){ ! ! // DBGOUTPUT( (*i).second.socket_ptr); csocket c(AF_INET, (int) domain, scan_sockets[(*i).second.socket_ptr].sid); ! ! c.getsockopt(SOL_SOCKET, SO_ERROR, (char *) &sopt, (socklen_t *) &soptlen); ! ! // DBGOUTPUT("!!!!"); switch(sopt){ case 0: #ifdef __CYGWIN__ ! if(false){ #else if(FD_ISSET(scan_sockets[(*i).second.socket_ptr].sid, &fd_r)){ --- 712,725 ---- if(s >= 0 && (FD_ISSET(scan_sockets[(*i).second.socket_ptr].sid, &fd_rtmp) || FD_ISSET(scan_sockets[(*i).second.socket_ptr].sid, &fd_wtmp) || ! FD_ISSET(scan_sockets[(*i).second.socket_ptr].sid, &fd_xtmp))){ csocket c(AF_INET, (int) domain, scan_sockets[(*i).second.socket_ptr].sid); ! ! c.getsockopt(SOL_SOCKET, SO_ERROR, (char *) &sopt, (socklen_t*) &soptlen); ! switch(sopt){ case 0: #ifdef __CYGWIN__ ! if(false){ #else if(FD_ISSET(scan_sockets[(*i).second.socket_ptr].sid, &fd_r)){ *************** *** 729,736 **** #endif }else{ ! //DBGOUTPUT("WRITE"); iceusleep(20000); res = c.write("", 0, 0); ! //DBGOUTPUT("/WRITE" << res); if(res < 0){ status = PORT_CLOSED; --- 727,734 ---- #endif }else{ ! DBGOUTPUT("WRITE"); iceusleep(20000); res = c.write("", 0, 0); ! DBGOUTPUT("/WRITE" << res); if(res < 0){ status = PORT_CLOSED; Index: icediscover.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/icediscover.h,v retrieving revision 1.26 retrieving revision 1.27 diff -C2 -d -r1.26 -r1.27 *** icediscover.h 17 Dec 2006 09:59:39 -0000 1.26 --- icediscover.h 17 Dec 2006 11:00:20 -0000 1.27 *************** *** 94,104 **** } ! char hostname[ICEMAXHOSTNAME]; char buf[1500]; //1500 == standart IP Packet size ! sockaddr_in source; ! int fromlen = sizeof(source); ! int len = recvfrom(r.get_socketid(), buf, sizeof(buf), 0, (sockaddr*)&source, &fromlen); if(len > 0){ --- 94,104 ---- } ! char hostname[ICEMAXHOSTNAME]; char buf[1500]; //1500 == standart IP Packet size ! sockaddr_in source; ! int fromlen = sizeof(source); ! int len = recvfrom(r.get_socketid(), buf, sizeof(buf), 0, (sockaddr*)&source, (socklen_t*) &fromlen); if(len > 0){ Index: udpscan.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/udpscan.h,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** udpscan.h 16 Dec 2006 20:44:18 -0000 1.12 --- udpscan.h 17 Dec 2006 11:00:20 -0000 1.13 *************** *** 82,86 **** if(gethostname(hostname,79)) exit(-1); ! int pppp = sudp.getMagicPort(SOCK_DGRAM, 100); sudp.bind(hostname, pppp, 0); sudp.nonblock(true); --- 82,87 ---- if(gethostname(hostname,79)) exit(-1); ! //int pppp = sudp.getMagicPort(SOCK_DGRAM, 100); ! int pppp = sudp.getMagicPort(); sudp.bind(hostname, pppp, 0); sudp.nonblock(true); |
From: Alexander B. <da...@us...> - 2006-12-17 11:00:24
|
Update of /cvsroot/javanetsim/IceScan/nbproject In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv14929/nbproject Modified Files: configurations.xml Log Message: no message Index: configurations.xml =================================================================== RCS file: /cvsroot/javanetsim/IceScan/nbproject/configurations.xml,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** configurations.xml 16 Dec 2006 17:29:16 -0000 1.16 --- configurations.xml 17 Dec 2006 11:00:20 -0000 1.17 *************** *** 5,12 **** <itemPath>icesockets/crawsocket.h</itemPath> <itemPath>icesockets/csocket.h</itemPath> - <itemPath>csubtarget.h</itemPath> <itemPath>icesockets/getaddrinfo.h</itemPath> <itemPath>icesockets/ice_rand.h</itemPath> - <itemPath>icediscover.h</itemPath> <itemPath>icesockets/iceregex.h</itemPath> <itemPath>icesockets/sock_arp.h</itemPath> --- 5,10 ---- *************** *** 21,34 **** displayName="Important Files" projectFiles="false"> <itemPath>.cvsignore</itemPath> <itemPath>CHANGELOG</itemPath> <itemPath>COPYING</itemPath> <itemPath>ieee-oui.txt</itemPath> - <itemPath>Makefile</itemPath> <itemPath>services</itemPath> <itemPath>TODO</itemPath> </logicalFolder> <itemPath>ctarget.h</itemPath> <itemPath>icedbs.h</itemPath> <itemPath>iceoutput.h</itemPath> <itemPath>iceparams.h</itemPath> --- 19,34 ---- displayName="Important Files" projectFiles="false"> + <itemPath>.#Makefile.1.2</itemPath> <itemPath>.cvsignore</itemPath> <itemPath>CHANGELOG</itemPath> <itemPath>COPYING</itemPath> <itemPath>ieee-oui.txt</itemPath> <itemPath>services</itemPath> <itemPath>TODO</itemPath> </logicalFolder> + <itemPath>csubtarget.h</itemPath> <itemPath>ctarget.h</itemPath> <itemPath>icedbs.h</itemPath> + <itemPath>icediscover.h</itemPath> <itemPath>iceoutput.h</itemPath> <itemPath>iceparams.h</itemPath> *************** *** 87,93 **** <itemTool>3</itemTool> </item> - <item path="icesockets/csocket.h"> - <itemTool>3</itemTool> - </item> <item path="icesockets/crawsocket.h"> <itemTool>3</itemTool> --- 87,90 ---- *************** *** 126,129 **** --- 123,129 ---- <itemTool>3</itemTool> </item> + <item path="icesockets/sock_win.h"> + <itemTool>3</itemTool> + </item> <item path="csubtarget.h"> <itemTool>3</itemTool> *************** *** 132,136 **** <itemTool>3</itemTool> </item> ! <item path="icesockets/sock_win.h"> <itemTool>3</itemTool> </item> --- 132,136 ---- <itemTool>3</itemTool> </item> ! <item path="icesockets/csocket.h"> <itemTool>3</itemTool> </item> |
From: Alexander B. <da...@us...> - 2006-12-17 11:00:24
|
Update of /cvsroot/javanetsim/IceScan/icesockets In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv14929/icesockets Modified Files: crawsocket.h csocket.h sock_types.h Log Message: no message Index: sock_types.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/icesockets/sock_types.h,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** sock_types.h 17 Dec 2006 09:59:40 -0000 1.17 --- sock_types.h 17 Dec 2006 11:00:20 -0000 1.18 *************** *** 68,71 **** --- 68,72 ---- #define SOCKET_ERROR -1 typedef int SOCKET; + //#define SOCKET int typedef uint16_t my_uint16_t; Index: crawsocket.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/icesockets/crawsocket.h,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** crawsocket.h 17 Dec 2006 09:59:40 -0000 1.13 --- crawsocket.h 17 Dec 2006 11:00:20 -0000 1.14 *************** *** 81,85 **** int rc = 0; ! if( rc = ::setsockopt(sid, level, opname, (sockbuf_type) optval, optlen) > 0 ) sockerror("setsockopt"); --- 81,85 ---- int rc = 0; ! if( rc = ::setsockopt(sid, level, opname, optval, optlen) > 0 ) sockerror("setsockopt"); *************** *** 92,96 **** int recvfrom(void *buf, int len, unsigned int flags, char *srchostname){ ! return csocket::recvfrom((sockbuf_type) buf, len, flags, srchostname, NULL); } --- 92,96 ---- int recvfrom(void *buf, int len, unsigned int flags, char *srchostname){ ! return csocket::recvfrom(buf, len, flags, srchostname, NULL); } Index: csocket.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/icesockets/csocket.h,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** csocket.h 17 Dec 2006 09:59:40 -0000 1.19 --- csocket.h 17 Dec 2006 11:00:20 -0000 1.20 *************** *** 10,19 **** #ifdef WIN32 ! typedef char* sockbuf_type; #else ! typedef void* sockbuf_type; #endif ! ! #define MIN_MAGIC_PORT 20000 #define MAX_MAGIC_PORT 65535 --- 10,19 ---- #ifdef WIN32 ! typedef char* sockbuf_type; #else ! typedef void* sockbuf_type; #endif ! ! #define MIN_MAGIC_PORT 30000 #define MAX_MAGIC_PORT 65535 *************** *** 88,97 **** void close(){ ! #ifndef WIN32 ! ::close(sid); ! #else ! ::closesocket(sid); ! #endif ! } ~csocket(){ /*std::cout << "CSCOCKET destroyed." << (cs_id) << std::endl; */ } --- 88,97 ---- void close(){ ! #ifndef WIN32 ! ::close(sid); ! #else ! ::closesocket(sid); ! #endif ! } ~csocket(){ /*std::cout << "CSCOCKET destroyed." << (cs_id) << std::endl; */ } *************** *** 102,105 **** --- 102,106 ---- struct sockaddr_in saddress; int len; + int sopt, soptlen; if(!(len = make_sockname(saddress, hostname, port, domain))) *************** *** 108,118 **** if(!timeout){ if(block){ - if(::connect(sid, (struct sockaddr *) &saddress, sizeof(struct sockaddr)) == SOCKET_ERROR) ! #ifndef WIN32 //UGLY!!!! ! return sockerror("connect"); ! #else ! ; ! #endif }else{ if(::connect(sid, (struct sockaddr *) &saddress, sizeof(struct sockaddr)) != SOCKET_ERROR) --- 109,118 ---- if(!timeout){ if(block){ if(::connect(sid, (struct sockaddr *) &saddress, sizeof(struct sockaddr)) == SOCKET_ERROR) ! #ifndef WIN32 ! return sockerror("connect"); ! #else ! ; ! #endif }else{ if(::connect(sid, (struct sockaddr *) &saddress, sizeof(struct sockaddr)) != SOCKET_ERROR) *************** *** 121,162 **** } }else{ ! fd_set sset; ! struct timeval tv; ! ! nonblock(true); ! ! ::connect(sid, (struct sockaddr *) &saddress, sizeof(struct sockaddr)); ! ! FD_ZERO(&sset); ! FD_SET(sid, &sset); ! tv.tv_sec = timeout; ! tv.tv_usec = 0; ! SOCKET ndfs = sid + 1; ! ! #ifdef WIN32 ! int res = select(0, NULL, &sset, NULL, &tv); ! #else ! int res = select(ndfs, NULL, &sset, NULL, &tv); ! #endif ! nonblock(false); ! if (res == SOCKET_ERROR && errno != EINTR){ ! return ICESOCK_ERRNO; ! } else if (res == 0){ ! int sopt, soptlen; ! getsockopt(SOL_SOCKET, SO_ERROR, (char *) &sopt, (socklen_t *) &soptlen); ! DBGOUTPUT(sopt); ! if(sopt == ECONNREFUSED) ! return ICESOCK_CONNREF; ! else ! return ICESOCK_TIMEOUT; ! } } ! return 0; } --- 121,161 ---- } }else{ ! fd_set sset; ! struct timeval tv; ! ! nonblock(true); ! ! ::connect(sid, (struct sockaddr *) &saddress, sizeof(struct sockaddr)); ! FD_ZERO(&sset); ! FD_SET(sid, &sset); ! tv.tv_sec = timeout; ! tv.tv_usec = 0; ! int ndfs = sid + 1; ! ! #ifdef WIN32 ! int res = select(0, NULL, &sset, NULL, &tv); ! #else ! int res = select(ndfs, NULL, &sset, NULL, &tv); ! #endif ! ! nonblock(false); ! ! if (res == SOCKET_ERROR && errno != EINTR){ ! return ICESOCK_ERRNO; ! } else if (res == 0){ ! getsockopt(SOL_SOCKET, SO_ERROR, (char *) &sopt, (socklen_t *) &soptlen); ! if(sopt == ECONNREFUSED) ! return ICESOCK_CONNREF; ! else ! return ICESOCK_TIMEOUT; ! } } ! return 0; } *************** *** 205,209 **** int rc = 0; ! if( rc = ::getsockopt(sid, level, opname, (sockbuf_type) optval, optlen) > 0 ) sockerror("getsockopt"); --- 204,208 ---- int rc = 0; ! if( rc = ::getsockopt(sid, level, opname, optval, optlen) > 0 ) sockerror("getsockopt"); *************** *** 211,215 **** } ! int recvfrom(sockbuf_type buf, int len, int flags, char *srchostname, int *srchostport){ int rsize; struct sockaddr_in from; --- 210,214 ---- } ! int recvfrom(void *buf, int len, int flags, char *srchostname, int *srchostport){ int rsize; struct sockaddr_in from; *************** *** 226,230 **** } ! int sendto(const char *hostname, int port, const char* msg, int len, unsigned int flags){ struct sockaddr_in saddress; int slen; --- 225,230 ---- } ! int sendto(const char *hostname, int port, const void *msg, int len, unsigned int flags){ ! struct sockaddr_in saddress; int slen; *************** *** 244,248 **** } ! SOCKET get_socketid(){ return sid; } --- 244,248 ---- } ! int get_socketid(){ return sid; } *************** *** 257,316 **** void nonblock(bool lck){ ! #ifndef WIN32 ! int arg = fcntl(sid, F_GETFL, NULL); ! ! if(arg < 0){ perror("Error in fcntl(.., F_GETFL, ...)."); throw "Error in fcntl(.., F_GETFL, ...)."; } ! ! if(lck){ ! arg |= O_NONBLOCK; ! block = false; ! }else{ ! arg ^= O_NONBLOCK; ! block = true; ! } ! ! if( fcntl(sid, F_SETFL, arg) < 0 ){ perror("Error in fcntl(.., F_GETFL, ...)."); throw "Error in fcntl(.., F_SETFL, ...)."; } ! #else ! ULONG NonBlock; ! if(lck) ! NonBlock = 1; ! else ! NonBlock = 0; ! if (ioctlsocket(sid, FIONBIO, &NonBlock) == SOCKET_ERROR) ! { ! perror("ioctlsocket() failed"); ! exit(-1); ! } ! #endif } ! static int getMagicPort(int type, int tries){ ! int mp; ! int i; ! bool p; ! csocket s(PF_INET, type); ! char hostname[80]; ! ! if(gethostname(hostname,79)){ ! printf("\ngethostname() returned error!\n"); ! exit(-1); ! } ! if(tries <= 0){ ! tries = MAX_MAGIC_PORT - MIN_MAGIC_PORT + 1; ! } ! ! for(i = 0, p = false; i < tries && !p; i++){ ! mp = (unsigned)rand() % (MAX_MAGIC_PORT - MIN_MAGIC_PORT + 1) + MIN_MAGIC_PORT; ! p = s.bind(hostname, mp, 0) == 0; ! if(p){ ! s.shutdown(); ! s.close(); ! } ! } ! ! return (p==false ? 0 : mp); } - }; --- 257,319 ---- void nonblock(bool lck){ ! #ifndef WIN32 ! int arg = fcntl(sid, F_GETFL, NULL); ! if(arg < 0){ perror("Error in fcntl(.., F_GETFL, ...)."); throw "Error in fcntl(.., F_GETFL, ...)."; } ! ! if(lck){ ! arg |= O_NONBLOCK; ! block = false; ! }else{ ! arg ^= O_NONBLOCK; ! block = true; ! } ! ! if( fcntl(sid, F_SETFL, arg) < 0 ){ perror("Error in fcntl(.., F_GETFL, ...)."); throw "Error in fcntl(.., F_SETFL, ...)."; } ! #else ! ULONG NonBlock; ! if(lck) ! NonBlock = 1; ! else ! NonBlock = 0; ! ! if (ioctlsocket(sid, FIONBIO, &NonBlock) == SOCKET_ERROR) ! { ! perror("ioctlsocket() failed"); ! exit(-1); ! } ! #endif } ! static int getMagicPort(int type, int tries){ ! int mp; ! int i; ! bool p; ! csocket s(PF_INET, type); ! char hostname[80]; ! ! if(gethostname(hostname,79)){ ! printf("\ngethostname() returned error!\n"); ! exit(-1); ! } ! if(tries <= 0){ ! tries = MAX_MAGIC_PORT - MIN_MAGIC_PORT + 1; ! } ! ! for(i = 0, p = false; i < tries && !p; i++){ ! mp = (unsigned)rand() % (MAX_MAGIC_PORT - MIN_MAGIC_PORT + 1) + MIN_MAGIC_PORT; ! p = s.bind(hostname, mp, 0) == 0; ! if(p){ ! s.shutdown(); ! s.close(); ! } ! } ! ! return (p==false ? 0 : mp); ! } ! ! static int getMagicPort(){ ! return 33333; } }; |