-
Notifications
You must be signed in to change notification settings - Fork 99
History
Daniel Frantík edited this page Jul 20, 2026
·
17 revisions
-
The O/R mapper is now part of the
tik4netpackage. It used to be published separately — astik4net.objectsthroughout 3.x, then astik4net.entitiesfor4.0.0-alpha. Thetik4netpackage now contains bothtik4net.dllandtik4net.objects.dll. -
No source changes needed. Namespaces (
tik4net.Objects, …) and assembly names are unchanged; only the NuGet package layout changed. -
If you are upgrading, remove any
PackageReferencetotik4net.objectsortik4net.entities— leaving them in place causes an assembly conflict. See Upgrading from 3.x to 4.0. - Packages published from now on:
tik4net,tik4net.ssh,tik4net.testing,tik4net.mcp.
First public release of the 4.x line. All packages published on NuGet.org: tik4net, tik4net.entities, tik4net.ssh, tik4net.testing, tik4net.mcp.
All new transports implement the same ITikConnection / LoadAll<T>() / Save<T>() interface:
-
REST / REST-SSL (
Rest,RestSsl) — HTTP REST API, requires RouterOS 7.1+ -
Telnet (
Telnet) — plain-text CLI over TCP 23 -
MAC-Telnet (
MacTelnet) — encrypted CLI over UDP 20561, no IP route needed (EC-SRP5 auth) -
WinBox CLI (
WinboxCli) — encrypted WinBox terminal over TCP 8291 (EC-SRP5 + AES) -
WinBox CLI over MAC (
WinboxCliMac) — same but over the MAC layer (UDP 20561) -
WinBox Native (
WinboxNative) — structured M2 CRUD over TCP 8291, no terminal (alpha⚠️ ) -
WinBox Native over MAC (
WinboxNativeMac) — native M2 over the MAC layer (alpha⚠️ ) -
SSH (
Ssh, in separatetik4net.sshpackage) — encrypted CLI over TCP 22 via SSH PTY
-
Change tracking —
Save<T>()diffs against the load-time snapshot; only changed fields sent -
Safe Mode —
SafeModeTake()/SafeModeRelease()/SafeModeUnroll()with auto-rollback on disconnect -
Streaming monitors —
ExecuteAsync/LoadListenAsyncfor live data (WinBox Native; listen poll+diff on CLI transports) -
TikConnectionSetup— unified connection configuration builder -
Connection capability model —
connection.Supports(TikConnectionCapability.Listen)etc. -
Raw command pass-through —
CreateRawCommandfor commands outside the O/R mapper -
WinBox GUI-name addressing — address entities by WinBox display name on
WinboxNative -
MCP server tool (
tik4net.mcp) — run any command over any transport from an AI assistant
-
Exception hierarchy unified —
TikCommandExceptionsubtypes restructured; reviewcatchblocks on specific subtypes -
SSH is now a satellite package — add
tik4net.sshand callTik4NetSsh.Register()at startup -
TikConnectionType.Api_v2/ApiSsl_v2— still[Obsolete(error)]as in 3.6; no action needed unless you haven't migrated yet
-
Savedefault mode changed toOnlyChanges—Savenow diffs against a local snapshot instead of performing aLoadByIdround-trip. Entities not loaded viaLoad*are sent in full. To restore 3.x behavior globally:TikDefaults.SaveMode = TikSaveMode.FullUpdate;See Change tracking.
-
Change tracking — automatic snapshot on all
Load*calls;Savesends only changed fields; no-op saves skip the API call. New types:TikChangeTracker,TikSnapshot,TikDefaults,TikSaveMode. New extension:connection.ChangeTracker(). -
New transports behind the same
ITikConnection(all alpha preview — see Connection types & capabilities):-
REST (
Rest/RestSsl, RouterOS 7.1+) -
Telnet (
Telnet, TCP 23) -
SSH (
Ssh, TCP 22 — satellite packagetik4net.ssh) -
MAC-Telnet (
MacTelnet, Layer-2 UDP 20561) -
WinBox CLI (
WinboxCli) and over MAC (WinboxCliMac) -
WinBox Native M2 (
WinboxNative) and over MAC (WinboxNativeMac)
-
REST (
-
Safe Mode —
SafeModeTake()/SafeModeRelease()/SafeModeUnroll()with automatic rollback-on-disconnect, across API / CLI / WinBox transports. -
Capability model —
TikConnectionCapabilityflags +Supports/Require; unsupported features fail closed withTikConnectionCapabilityNotSupportedException. -
Raw command pass-through —
connection.CreateRawCommand(raw)sends a payload in the transport's own dialect. See Command translation. -
WinBox Native addressing by GUI names — opt-in
connection.UseGuiNames = true, plusPathAlias(apiPath, winboxMenuPath)to map a whole path by the labels WinBox shows (upgrade-safe, unlike the numericPathOverride). See Session mappings. - MCP server — drive any command over any transport from an AI assistant.
⚠️ The non-API transports are alpha previews and the whole 4.0.0 line is still in development — behaviour and API may change before release.
-
Targets
netstandard2.0only. Dropped net35/net40/net452/netcoreapp1.x. Compatible with .NET Framework 4.6.1+, .NET Core 2.0+, .NET 5–9, Xamarin, Unity. -
LoadListen<T>renamed toLoadListenAsync<T>for naming consistency withLoadAsync.
-
Three separate NuGet packages —
tik4net,tik4net.entities,tik4net.testing. Installingtik4net.entitiesautomatically pulls intik4net. (Note: the assembly file is still namedtik4net.objects.dll; only the NuGet package ID changed.) — superseded in 4.0.0-alpha2, which merges the mapper back intotik4net. - New
tik4net.testingpackage —TikFakeConnectionfor unit tests without a live router. (#54)
-
LoadListenAsync<T>— real-time entity monitoring via/listen(#88) -
ExecuteListUntilDone— streams sentences until!done; fixes false-abort inExecuteListWithDuration(#48) -
[Flags]enum support for comma-separated MikroTik fields (#79, #94) - RouterOS 7.18+ empty sentence responses handled correctly (#105)
- WireGuard —
InterfaceWireguard,InterfaceWireguardPeer(#92) - PPPoE —
InterfacePppoeClient,InterfacePppoeClientMonitor(#81) - BGP —
BgpConnection
- Fix reboot/shutdown causing
IOException(#100) - Fix regex rejecting empty property values (#97)
- Ignore
.sectionprogress sentences inEnsureSingleResponse(#96)
- Support .proplist parameter
- ApiCommand - allow to set parameter type via name prefix e.q. =name or ?name
- ApiCommand.ExecuteSingleRowOrDefault #58
- ApiCommand.ExecuteScalar(target), ExecuteScalarOrDefault(...), ExecuteList(proplist)
- ApiCommand.WithParameter builder pattern support
- ApiConnection.DebugEnabled=true when Debugger.IsAttached
-
Exception tree redesign
- TikConnectionNotOpenException, TikConnectionLoginException
- TikCommandTrapException
- TikNoSuchCommandException
- TikNoSuchItemException
- TikAlreadyHaveSuchItemException
- TikCommandAmbiguousResultException
- TikCommandFatalException
- TikCommandAbortException
- TikCommandUnexpectedResponseException
- .NET core 2.2
- HotspotIpBinding
- EthernetMonitor
- Added FirewallFilter.Bytes, FirewallFilter.Packets
- Interface.LastLinkDownTime, LastLinkUpTime. Credits: nescafe2002
- IpRoute (dj3mu)
- BGP: BgpAdvertisements, BgpInstance, BgpNetwork, BgpPeer (dj3mu)
- SystemIdentity (dj3mu)
- SystemRouterboard (dj3mu)
- Users: User, UserGroup (dj3mu)
- FirewalServicePort
- Obsolete classes cleanup
- Duplicit response fields workaround. #51
- FirewallFilter.Protocol default value removed - fix #52
- FirewallNat.DstPort/SrcPort is string now (mortengjesing)
- Unification of login process: Api_v2, ApiSsl_v2 is now obsolete. Api and ApiSsl will work for both new and old tik version
- tool/traceroute entity + helpers
- tool/ping helpers
- Command.ExecuteWithDuration fix
- InterfaceMonitorTraffic fix
- Support for own tag sent to sync commands in commandText
- Native support for entities loaded in different way than /print
- Connection.LoadByName extension
- Connection extension methods for entity static methods
- Connection .ExecuteNonQuery, .ExecuteScalar extensions
- ApiCommand onDoneCallback for LoadAsync
- Connection.SendTagWithSyncCommand option
- InterfaceMonitorTraffic
- WirelessChannels, WirelessSniffer ( (c) AsafMag)
- PPP objects
- Exception from conncetion.Close
- Typo in InterfaceWireless
- Correct behavior when connection was forced to close
- Parallel async commands cancel fix
- Connection.Open fixed (mentioned by az1984, hardwarematik)
- New 6.43 login process supported (credits:DaveSchmid)
- XML documentation embeded also in *.zip
- Connection open timeout support
- small improvements
- WOL support
- BETA: Support for NetCoreApp and NetStandard (functional with Xamarin on Android devices etc.)
- Some bug fixies and updates
- multiline response (script) fix. Credits: pmishka
- Adding CapsManRegistrationTable entity and support TimeSpan conversion. Credits: sebastienwarin
- .NET 4.6
- Encoding support
- Refactoring - nested classes removed (breaking change!)
- DNS objects added
- Ping object
- API-SSL support (alpha)
- nuget support
- Additional hotspot classes (credits: D-Bullock)
- Mikrotik time helper class (credits: D-Bullock)
- Added support for formated commands
- Bridge entities (InterfaceBridge, BridgeNat, BridgeFilter)
- FirewallConnection.ConnectionTracking
- Fixed word length calculation (credits: h44z)
- Hotspot user management fixed
- Async API refactoring (cleaning)
- Hotspot users
- Interface (eth/wlan)
- hotspot user entities
- Enum support (as field values)
- C# entity code generators
- .NET 3.5, .NET 4.0, .NET 4.5.2
- Initial release
- Deprecated (incompatible) version