func NewIcmp(testMode bool, results publisher.Client) (*Icmp, error) { icmp := &Icmp{} icmp.initDefaults() if !testMode { err := icmp.setFromConfig(config.ConfigSingleton.Protocols.Icmp) if err != nil { return nil, err } } var err error icmp.localIps, err = common.LocalIpAddrs() if err != nil { logp.Err("icmp", "Error getting local IP addresses: %s", err) icmp.localIps = []net.IP{} } logp.Debug("icmp", "Local IP addresses: %s", icmp.localIps) var removalListener = func(k common.Key, v common.Value) { icmp.expireTransaction(k.(hashableIcmpTuple), v.(*icmpTransaction)) } icmp.transactions = common.NewCacheWithRemovalListener( icmp.transactionTimeout, protos.DefaultTransactionHashSize, removalListener) icmp.transactions.StartJanitor(icmp.transactionTimeout) icmp.results = results return icmp, nil }
func (proc *ProcessesWatcher) Init(config ProcsConfig) error { proc.proc_prefix = "" proc.PortProcMap = make(map[uint16]PortProcMapping) proc.LastMapUpdate = time.Now() proc.ReadFromProc = config.Enabled if proc.ReadFromProc { if runtime.GOOS != "linux" { proc.ReadFromProc = false logp.Info("Disabled /proc/ reading because not on linux") } else { logp.Info("Process matching enabled") } } if config.Max_proc_read_freq == 0 { proc.MaxReadFreq = 10 * time.Millisecond } else { proc.MaxReadFreq = time.Duration(config.Max_proc_read_freq) * time.Millisecond } if config.Refresh_pids_freq == 0 { proc.RefreshPidsFreq = 1 * time.Second } else { proc.RefreshPidsFreq = time.Duration(config.Refresh_pids_freq) * time.Millisecond } // Read the local IP addresses var err error proc.LocalAddrs, err = common.LocalIpAddrs() if err != nil { logp.Err("Error getting local IP addresses: %s", err) proc.LocalAddrs = []net.IP{} } if proc.ReadFromProc { for _, procConfig := range config.Monitored { grepper := procConfig.Cmdline_grep if len(grepper) == 0 { grepper = procConfig.Process } p, err := NewProcess(proc, procConfig.Process, grepper, time.Tick(proc.RefreshPidsFreq)) if err != nil { logp.Err("NewProcess: %s", err) } else { proc.Processes = append(proc.Processes, p) } } } return nil }