From fbc9ddae92265ca15d07a903412cfeee3915426e Mon Sep 17 00:00:00 2001 From: dmiller Date: Wed, 12 Oct 2016 15:26:55 +0000 Subject: [PATCH] More accurate handling of obscure ICMP-based connect errors. --- scan_engine_connect.cc | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/scan_engine_connect.cc b/scan_engine_connect.cc index 6ec0c834b..d0c89c999 100644 --- a/scan_engine_connect.cc +++ b/scan_engine_connect.cc @@ -278,6 +278,10 @@ static void handleConnectResult(UltraScanInfo *USI, HostScanStats *hss, break; #ifdef ENOPROTOOPT case ENOPROTOOPT: + newhoststate = HOST_DOWN; + newportstate = PORT_FILTERED; + current_reason = ER_PROTOUNREACH; + break; #endif case EHOSTUNREACH: newhoststate = HOST_DOWN; @@ -301,6 +305,12 @@ static void handleConnectResult(UltraScanInfo *USI, HostScanStats *hss, newportstate = PORT_FILTERED; current_reason = ER_NETUNREACH; break; + case ENONET: + /* For Linux at least, this means ICMP type 3 code 8, source host isolated */ + newhoststate = HOST_DOWN; + newportstate = PORT_FILTERED; + current_reason = ER_DESTUNREACH; + break; case ENETDOWN: case ENETRESET: case ECONNABORTED: