private const int MaxTimeout = 5 * 60 * 1000; // 5 minutes private SnmpEngine CreateEngine(bool timeout = false, bool max255chars = false) { // TODO: this is a hack. review it later. var store = new ObjectStore(); store.Add(new SysDescr()); store.Add(new SysObjectId()); store.Add(new SysUpTime()); store.Add(new SysContact()); store.Add(new SysName()); store.Add(new SysLocation()); store.Add(new SysServices()); store.Add(new SysORLastChange()); store.Add(new SysORTable()); store.Add(new IfNumber()); store.Add(new IfTable()); if (timeout) { store.Add(new TimeoutObject()); } if (max255chars) { store.Add(new Max255CharsObject()); } var users = new UserRegistry(); users.Add(new OctetString("neither"), DefaultPrivacyProvider.DefaultPair); users.Add(new OctetString("authen"), new DefaultPrivacyProvider(new MD5AuthenticationProvider(new OctetString("authentication")))); if (DESPrivacyProvider.IsSupported) { users.Add(new OctetString("privacy"), new DESPrivacyProvider(new OctetString("privacyphrase"), new MD5AuthenticationProvider(new OctetString("authentication")))); } var getv1 = new GetV1MessageHandler(); var getv1Mapping = new HandlerMapping("v1", "GET", getv1); var getv23 = new GetMessageHandler(); var getv23Mapping = new HandlerMapping("v2,v3", "GET", getv23); var setv1 = new SetV1MessageHandler(); var setv1Mapping = new HandlerMapping("v1", "SET", setv1); var setv23 = new SetMessageHandler(); var setv23Mapping = new HandlerMapping("v2,v3", "SET", setv23); var getnextv1 = new GetNextV1MessageHandler(); var getnextv1Mapping = new HandlerMapping("v1", "GETNEXT", getnextv1); var getnextv23 = new GetNextMessageHandler(); var getnextv23Mapping = new HandlerMapping("v2,v3", "GETNEXT", getnextv23); var getbulk = new GetBulkMessageHandler(); var getbulkMapping = new HandlerMapping("v2,v3", "GETBULK", getbulk); var v1 = new Version1MembershipProvider(new OctetString(communityPublic), new OctetString(communityPublic)); var v2 = new Version2MembershipProvider(new OctetString(communityPublic), new OctetString(communityPublic)); var v3 = new Version3MembershipProvider(); var membership = new ComposedMembershipProvider(new IMembershipProvider[] { v1, v2, v3 }); var handlerFactory = new MessageHandlerFactory(new[] { getv1Mapping, getv23Mapping, setv1Mapping, setv23Mapping, getnextv1Mapping, getnextv23Mapping, getbulkMapping }); var pipelineFactory = new SnmpApplicationFactory(store, membership, handlerFactory); var listener = new Listener { Users = users }; listener.ExceptionRaised += (sender, e) => { Assert.True(false, "unexpected exception"); }; return(new SnmpEngine(pipelineFactory, listener, new EngineGroup())); }