[netstack] add CLI flag to enable sniffing
Change-Id: I34f59811ddf73fbfb778d80d66ab0cabaffb04d4
diff --git a/src/connectivity/network/netstack/main.go b/src/connectivity/network/netstack/main.go
index 3521e6d..937e209 100644
--- a/src/connectivity/network/netstack/main.go
+++ b/src/connectivity/network/netstack/main.go
@@ -9,6 +9,7 @@
"flag"
"fmt"
"log"
+ "os"
"reflect"
"runtime"
"syscall/zx"
@@ -46,7 +47,7 @@
// logging service also adds a trailing newline.
data = bytes.TrimSuffix(data, []byte("\n"))
- if err := logger.VLogf(logger.TraceVerbosity, "%s", data); err != nil {
+ if err := logger.VLogf(logger.DebugVerbosity, "%s", data); err != nil {
return 0, err
}
@@ -54,12 +55,16 @@
}
func Main() {
- flag.Parse()
+ flags := flag.NewFlagSet(os.Args[0], flag.ContinueOnError)
+ sniff := flags.Bool("sniff", false, "Enable the sniffer")
+ if err := flags.Parse(os.Args[1:]); err != nil {
+ panic(err)
+ }
ctx := context.CreateFromStartupInfo()
options := logger.LogInitOptions{
- Loglevel: logger.InfoLevel,
+ Loglevel: logger.DebugLevel,
Connector: ctx.Connector(),
Tags: []string{"netstack"},
MinSeverityForFileAndLineInfo: logger.InfoLevel,
@@ -70,7 +75,6 @@
log.SetOutput((*logWriter)(nil))
log.SetFlags(log.Lshortfile)
- logger.Infof("started")
stk := tcpipstack.New([]string{
ipv4.ProtocolName,
@@ -103,6 +107,7 @@
arena: arena,
dnsClient: dns.NewClient(stk),
deviceSettings: ds,
+ sniff: *sniff,
}
ns.mu.ifStates = make(map[tcpip.NICID]*ifState)
ns.mu.stack = stk
diff --git a/src/connectivity/network/netstack/netstack.go b/src/connectivity/network/netstack/netstack.go
index 251783a..7132d18 100644
--- a/src/connectivity/network/netstack/netstack.go
+++ b/src/connectivity/network/netstack/netstack.go
@@ -39,7 +39,6 @@
)
const (
- sniff = false
deviceSettingsManagerNodenameKey = "DeviceName"
defaultNodename = "fuchsia-unset-device-name"
@@ -73,6 +72,7 @@
ifStates map[tcpip.NICID]*ifState
}
nodename string
+ sniff bool
filter *filter.Filter
@@ -649,7 +649,7 @@
// LinkEndpoint chains:
// Put sniffer as close as the NIC.
- if sniff {
+ if ns.sniff {
// A wrapper LinkEndpoint should encapsulate the underlying
// one, and manifest itself to 3rd party netstack.
linkID = sniffer.New(linkID)
@@ -669,7 +669,7 @@
ns.mu.ifStates[ifs.nicid] = ifs
ns.mu.countNIC++
- logger.Infof("NIC %s added", name)
+ logger.Infof("NIC %s added [sniff = %t]", name, ns.sniff)
if err := ns.mu.stack.CreateNIC(ifs.nicid, linkID); err != nil {
return nil, fmt.Errorf("NIC %s: could not create NIC: %v", ifs.mu.nic.Name, err)