Use our forked TunnelKit
So far, we've been using a copy of TunnelKit 4.0.3 with our own changes implemented on top of that copy.
We now have a fork of TunnelKit (https://github.com/eduvpn/tunnelkit) on which we'll track our changes. In that fork, we now have our changes rebased on top of TunnelKit v5.0.0. The API for getting rx/tx bytecount and IP information has changed in 5.0 (it doesn't use handleAppMessage). We want to continue using handleAppMessage as that's more optimal and fits our use case better. To enable us to do that, I've implemented an OpenVPNAdapter API (very much like the WireGuardAdapter API) that's used from our packet tunnel provider class (which then implements the handleAppMessage requests).
Also, in the near future, I plan to merge the two network extensions (OpenVPN and WireGuard) into one network extension (required for implementing it as a system extension), and the adapter API will enable us to do that.
The base iOS version has moved to iOS 13 because TunnelKit 5.0 has moved to iOS 13.