// configureSNMP sets the various version and auth settings. func (c Module) configureSNMP(g *gosnmp.GoSNMP) { switch c.Version { case 1: g.Version = gosnmp.Version1 case 2: g.Version = gosnmp.Version2c case 3: g.Version = gosnmp.Version3 } g.Community = c.Auth.Community // v3 security settings. g.SecurityModel = gosnmp.UserSecurityModel switch c.Auth.SecurityLevel { case "noAuthNoPriv": g.MsgFlags = gosnmp.NoAuthNoPriv case "authNoPriv": g.MsgFlags = gosnmp.AuthNoPriv case "authPriv": g.MsgFlags = gosnmp.AuthPriv } usm := &gosnmp.UsmSecurityParameters{ UserName: c.Auth.Username, AuthenticationPassphrase: c.Auth.Password, PrivacyPassphrase: c.Auth.PrivPassword, } switch c.Auth.AuthProtocol { case "SHA": usm.AuthenticationProtocol = gosnmp.SHA case "MD5": usm.AuthenticationProtocol = gosnmp.MD5 } switch c.Auth.PrivProtocol { case "DES": usm.PrivacyProtocol = gosnmp.DES case "AES": usm.PrivacyProtocol = gosnmp.AES } g.SecurityParameters = usm }