@@ -36,11 +36,10 @@ set tmpdir {C:/TEMP} } else { set tmpdir /tmp } } -set tmpdir "C:/TEMP" # Determine interface to lookup set dest_parm_idx [lsearch -exact $argv "-i"] if {$dest_parm_idx != -1} { incr dest_parm_idx @@ -81,42 +80,33 @@ set exit 1 set start_npf_service 0 set npf_failed 0 if {[catch { set filesdir [file join $dstdir files] + file mkdir $dstdir - exec cmd /c mkdir [file nativename $dstdir] - exec cmd /c mkdir [file nativename $filesdir] - - file copy -- {*}[glob -directory $srcdir *] $filesdir + file copy -- $srcdir $filesdir ## Delete extraneous service - if {[::twapi::service_exists npf]} { - if {![catch { - ::twapi::stop_service npf - }]} { - set start_npf_service 1 - } + catch { + ::twapi::stop_service npf } catch { - ::twapi::stop_service npf_tcpdump - } - - catch { - ::twapi::delete_service npf_tcpdump + ::twapi::delete_service npf } ## Install driver and start service if {[catch { set driver [file join $filesdir npf${bits}.sys] set driver [file nativename $driver] - ::twapi::create_service npf_tcpdump $driver -displayname "NPF for TCPDUMP (ignore)" -servicetype kernel_driver -starttype demand_start -errorcontrol ignore + ::twapi::create_service npf $driver -displayname "WinPcap Packet Driver (NPF)" -servicetype kernel_driver -starttype demand_start -errorcontrol ignore -puts [exec net start npf_tcpdump] - ::twapi::start_service npf_tcpdump -puts [exec net start npf_tcpdump] + set started [::twapi::start_service npf -wait 60000] + if {!$started} { + error "npf did not start" + } } npf_err]} { set npf_failed 1 } after 5000 @@ -134,29 +124,20 @@ puts "Failed: $::errorInfo" set exit 1 } -# Debug -puts [exec net stop npf_tcpdump] -puts [exec net start npf_tcpdump] # Cleanup catch { - ::twapi::stop_service npf_tcpdump + ::twapi::stop_service npf } catch { - ::twapi::delete_service npf_tcpdump -} - -if {$start_npf_service} { - catch { - ::twapi::start_service npf - } + ::twapi::delete_service npf } catch { file delete -force -- $dstdir } # Terminate exit $exit