Loading src/main.c +8 −4 Original line number Diff line number Diff line Loading @@ -56,7 +56,7 @@ scanning_thread(void *v) double timestamp_start; unsigned *picker; LOG(1, "starting scanning thread...\n"); LOG(1, "xmit: starting transmit thread...\n"); status_start(&status); throttler_start(&throttler, masscan->max_rate); Loading @@ -74,6 +74,7 @@ scanning_thread(void *v) /* * the main loop */ LOG(3, "xmit: starting main loop\n"); for (i=masscan->resume.index; i<masscan->lcg.m; ) { uint64_t batch_size; Loading @@ -98,6 +99,9 @@ scanning_thread(void *v) ip = rangelist_pick2(&masscan->targets, seed%count_ips, picker); port = rangelist_pick(&masscan->ports, seed/count_ips); /* Print packet if debugging */ if (packet_trace) tcpkt_trace(pkt_template, ip, port, timestamp_start); /* Send the probe */ rawsock_send_probe(masscan->adapter, ip, port, pkt_template); Loading @@ -112,9 +116,6 @@ scanning_thread(void *v) if ((i & status.timer) == status.timer) status_print(&status, i, m); /* Print packet if debugging */ if (packet_trace) tcpkt_trace(pkt_template, ip, port, timestamp_start); } if (control_c_pressed) { Loading Loading @@ -250,7 +251,9 @@ initialize_adapter(struct Masscan *masscan, fprintf(stderr, "adapter[%s].init: failed\n", ifname); return -1; } LOG(3, "rawsock: ignoring transmits\n"); rawsock_ignore_transmits(masscan->adapter, adapter_mac); LOG(3, "rawsock: initialization done\n"); /* * ROUTER MAC ADDRESS Loading @@ -267,6 +270,7 @@ initialize_adapter(struct Masscan *masscan, unsigned router_ipv4; int err; LOG(1, "rawsock: looking for default gateway\n"); err = rawsock_get_default_gateway(ifname, &router_ipv4); if (err == 0) { LOG(2, "auto-detected: router-ip=%u.%u.%u.%u\n", Loading src/rawsock.c +24 −15 Original line number Diff line number Diff line Loading @@ -261,11 +261,13 @@ rawsock_send_packet( { if (adapter->ring) { int err = 0; int err = PF_RING_ERROR_NO_TX_SLOT_AVAILABLE; while (err != PF_RING_ERROR_NO_TX_SLOT_AVAILABLE) { while (err == PF_RING_ERROR_NO_TX_SLOT_AVAILABLE) { err = PFRING.send(adapter->ring, packet, length, 1); } if (err < 0) LOG(1, "pfring:xmit: ERROR %d\n", err); return err; } else if (adapter->sendq) { int err; Loading Loading @@ -415,12 +417,17 @@ const char *rawsock_win_name(const char *ifname) void rawsock_ignore_transmits(struct Adapter *adapter, const unsigned char *adapter_mac) { if (adapter == 0) return; if (adapter->ring) { /* don't do anything, we've already done it above */ return; } #if !defined(WIN32) { if (adapter->pcap) { int err; //printf("%u", PCAP_OPENFLAGS_NOCAPTURE_LOCAL); Loading @@ -430,7 +437,7 @@ void rawsock_ignore_transmits(struct Adapter *adapter, const unsigned char *adap } } #else { if (adapter->pcap) { int err; char filter[256]; struct bpf_program prog; Loading Loading @@ -496,7 +503,7 @@ rawsock_init_adapter(const char *adapter_name, unsigned is_pfring, unsigned is_s unsigned version; LOG(2, "pfring:'%s': opening...\n", adapter_name); adapter->ring = PFRING.open(adapter_name, 1500, 0); adapter->ring = PFRING.open(adapter_name, 1500, 0); //PF_RING_REENTRANT); adapter->pcap = (pcap_t*)adapter->ring; if (adapter->ring == NULL) { LOG(0, "pfring:'%s': OPEN ERROR: %s\n", adapter_name, strerror_x(errno)); Loading @@ -511,6 +518,14 @@ rawsock_init_adapter(const char *adapter_name, unsigned is_pfring, unsigned is_s (version >> 8) & 0xFF, (version >> 0) & 0xFF); LOG(2, "pfring:'%s': setting direction\n", adapter_name); err = PFRING.set_direction(adapter->ring, rx_only_direction); if (err) { fprintf(stderr, "pfring:'%s': setdirection = %d\n", adapter_name, err); } else LOG(2, "pfring:'%s': direction success\n", adapter_name); LOG(2, "pfring:'%s': activating\n", adapter_name); err = PFRING.enable_ring(adapter->ring); if (err != 0) { LOG(0, "pfring: '%s': ENABLE ERROR: %s\n", adapter_name, strerror_x(errno)); Loading @@ -518,14 +533,8 @@ rawsock_init_adapter(const char *adapter_name, unsigned is_pfring, unsigned is_s adapter->ring = 0; return 0; } else LOG(1, "pfring:'%s': succesfully enabled enabled\n", adapter_name); LOG(1, "pfring:'%s': succesfully eenabled\n", adapter_name); LOG(2, "pfring:'%s': setting direction\n", adapter_name); err = PFRING.set_direction(adapter->ring, rx_only_direction); if (err) { fprintf(stderr, "pfring:'%s': setdirection = %d\n", err); } else LOG(2, "pfring:'%s': direction success\n"); return adapter; } else { Loading Loading
src/main.c +8 −4 Original line number Diff line number Diff line Loading @@ -56,7 +56,7 @@ scanning_thread(void *v) double timestamp_start; unsigned *picker; LOG(1, "starting scanning thread...\n"); LOG(1, "xmit: starting transmit thread...\n"); status_start(&status); throttler_start(&throttler, masscan->max_rate); Loading @@ -74,6 +74,7 @@ scanning_thread(void *v) /* * the main loop */ LOG(3, "xmit: starting main loop\n"); for (i=masscan->resume.index; i<masscan->lcg.m; ) { uint64_t batch_size; Loading @@ -98,6 +99,9 @@ scanning_thread(void *v) ip = rangelist_pick2(&masscan->targets, seed%count_ips, picker); port = rangelist_pick(&masscan->ports, seed/count_ips); /* Print packet if debugging */ if (packet_trace) tcpkt_trace(pkt_template, ip, port, timestamp_start); /* Send the probe */ rawsock_send_probe(masscan->adapter, ip, port, pkt_template); Loading @@ -112,9 +116,6 @@ scanning_thread(void *v) if ((i & status.timer) == status.timer) status_print(&status, i, m); /* Print packet if debugging */ if (packet_trace) tcpkt_trace(pkt_template, ip, port, timestamp_start); } if (control_c_pressed) { Loading Loading @@ -250,7 +251,9 @@ initialize_adapter(struct Masscan *masscan, fprintf(stderr, "adapter[%s].init: failed\n", ifname); return -1; } LOG(3, "rawsock: ignoring transmits\n"); rawsock_ignore_transmits(masscan->adapter, adapter_mac); LOG(3, "rawsock: initialization done\n"); /* * ROUTER MAC ADDRESS Loading @@ -267,6 +270,7 @@ initialize_adapter(struct Masscan *masscan, unsigned router_ipv4; int err; LOG(1, "rawsock: looking for default gateway\n"); err = rawsock_get_default_gateway(ifname, &router_ipv4); if (err == 0) { LOG(2, "auto-detected: router-ip=%u.%u.%u.%u\n", Loading
src/rawsock.c +24 −15 Original line number Diff line number Diff line Loading @@ -261,11 +261,13 @@ rawsock_send_packet( { if (adapter->ring) { int err = 0; int err = PF_RING_ERROR_NO_TX_SLOT_AVAILABLE; while (err != PF_RING_ERROR_NO_TX_SLOT_AVAILABLE) { while (err == PF_RING_ERROR_NO_TX_SLOT_AVAILABLE) { err = PFRING.send(adapter->ring, packet, length, 1); } if (err < 0) LOG(1, "pfring:xmit: ERROR %d\n", err); return err; } else if (adapter->sendq) { int err; Loading Loading @@ -415,12 +417,17 @@ const char *rawsock_win_name(const char *ifname) void rawsock_ignore_transmits(struct Adapter *adapter, const unsigned char *adapter_mac) { if (adapter == 0) return; if (adapter->ring) { /* don't do anything, we've already done it above */ return; } #if !defined(WIN32) { if (adapter->pcap) { int err; //printf("%u", PCAP_OPENFLAGS_NOCAPTURE_LOCAL); Loading @@ -430,7 +437,7 @@ void rawsock_ignore_transmits(struct Adapter *adapter, const unsigned char *adap } } #else { if (adapter->pcap) { int err; char filter[256]; struct bpf_program prog; Loading Loading @@ -496,7 +503,7 @@ rawsock_init_adapter(const char *adapter_name, unsigned is_pfring, unsigned is_s unsigned version; LOG(2, "pfring:'%s': opening...\n", adapter_name); adapter->ring = PFRING.open(adapter_name, 1500, 0); adapter->ring = PFRING.open(adapter_name, 1500, 0); //PF_RING_REENTRANT); adapter->pcap = (pcap_t*)adapter->ring; if (adapter->ring == NULL) { LOG(0, "pfring:'%s': OPEN ERROR: %s\n", adapter_name, strerror_x(errno)); Loading @@ -511,6 +518,14 @@ rawsock_init_adapter(const char *adapter_name, unsigned is_pfring, unsigned is_s (version >> 8) & 0xFF, (version >> 0) & 0xFF); LOG(2, "pfring:'%s': setting direction\n", adapter_name); err = PFRING.set_direction(adapter->ring, rx_only_direction); if (err) { fprintf(stderr, "pfring:'%s': setdirection = %d\n", adapter_name, err); } else LOG(2, "pfring:'%s': direction success\n", adapter_name); LOG(2, "pfring:'%s': activating\n", adapter_name); err = PFRING.enable_ring(adapter->ring); if (err != 0) { LOG(0, "pfring: '%s': ENABLE ERROR: %s\n", adapter_name, strerror_x(errno)); Loading @@ -518,14 +533,8 @@ rawsock_init_adapter(const char *adapter_name, unsigned is_pfring, unsigned is_s adapter->ring = 0; return 0; } else LOG(1, "pfring:'%s': succesfully enabled enabled\n", adapter_name); LOG(1, "pfring:'%s': succesfully eenabled\n", adapter_name); LOG(2, "pfring:'%s': setting direction\n", adapter_name); err = PFRING.set_direction(adapter->ring, rx_only_direction); if (err) { fprintf(stderr, "pfring:'%s': setdirection = %d\n", err); } else LOG(2, "pfring:'%s': direction success\n"); return adapter; } else { Loading