I ran through the code ... I found two major issues:
1)
https://github.com/ptony82/brunet/commit/4990779a89385485f8777305e4d8502ff1ba0a89
Which disables DNS in Linux ... Could you express the state of this in SVPN?
2)
https://github.com/ptony82/brunet/commit/f27c2ccd36fa557e7c431ae0d5764b0d99c45d14
While I made a mistake that your approach was going to throw exception, it will not necessarily reveal the actual Nat, since the type is dynamic and won't be revealed the first time you access NatHandler. I fixed this in the following patch:
https://github.com/davidiw/brunet/commit/a63c06d2629b427c920be19ef52075a16d049d15With regards to 1), DNS supports the ability to do recursive calls avoiding this DNS server nonsense in Linux. I recommend you check it out.
Also one issue kept popping up: you were merging main branch with your branch as opposed to merging your code into the main branch. This makes jobs like this a pain in the butt as many issues were fixed by both of us: in the main branch, in your merge branch, and during my cherry picking. Really it is more a testament to all involved and maybe a best practice: an individual should always place their deltas at the top of a master branch rather than merging the master branch into their code, that way when adding their features to the actual master branch it is significantly easier.
Last but not least, the completed branch is at
https://github.com/davidiw/brunet/tree/testingRegards,
David