code: func (s *SNMP) Open() (err error) {
  	if s.conn != nil {
  		return
  	}
  
  	err = retry(int(s.args.Retries), func() error {
  		conn, e := net.DialTimeout(s.args.Network, s.args.Address, s.args.Timeout)
  		if e == nil {
  			s.conn = conn
  		}
  		return e
  	})
  	if err != nil {
  		return
  	}
  
  	s.engine = newSNMPEngine(s.args)
  	if err = s.engine.Discover(s); err != nil {
  		s.Close()
  	}
  	return
  }
docs: // Open a connection