Here's the changelog:
- dhcp: fixed classless static routes
- prefix delegation: build routes after assigning addresses
- dhcp: on lease expiration, discover only when carrier
- ip6: fix potential segfault when lifetime overflows
- bsd: compile on recent OpenBSD platforms
- dhcp: fix reporting of DNS encoded SIP servers
- dhcp6: fix unicast in non master mode
All the critical issues people have highighted have now been resolved, so hopefully this is the last rc before release :)
[ERROR] Can't open and lock privilege tables: Got error 9 from storage engine
Nice error. Googling for it doesn't reveal much on how to fix it. The good news is that I only use MySQL for Phabricator and PostreSQL for everything else. The bad news is that my Phabricator instance is no longer working. The worse news is that I get the same error when trying to use backups, so there must be something else in play here.
Ideas on how to resolve this are welcome!
I'm desperately trying to retire a server i have. It's sole remaining task is to share the attached printer on the network via Samba. It uses CUPS as the backend.
Trying to print a test page gives
No such file or directory. That's nice, but it should at least say what the file or directory it cannot find actually is.
Trying to connect to the printer from a Windows machine (I can see the printer find in the server share) gives an error that it cannot connect, but nothing appears in the Samba or CUPS logs.
This is 2017, surely we have better diagnostics to solve these issues!
So dhcpcd has supported a shared IP address for a long time. It did this by removing the address from the non preferrred interface and then adding it to the preferred interface.
But this came with some issues:
- There is a window where the IP address doesn't exist, and the kernel may wipe out the subnet route at that point also.
- DHCP renews didn't come through to the right interface.
- Some kernels didn't like the address moving interfaces.
Still, to the best of my knowledge, no other product has this feature and for the most part, it did work well allowing almost seamless switching of wired -> wireless and back again with both using the same IP address. But that wasn't good enough - I was challenged to do better!
So I took up the bat and cooked up this changeset to change the behaviour to this:
- Each applicable interface will have the shared ip address.
- Whenever the address is added, the most preferred address will be ARP announced.
And lo - IT WORKS!!! The changeover when plugging/removing the wired interface is 100% seamless for me. ssh, ping, etc get zero interuption. Of course, YMMV ;)
But there are some costs:
- Thanks to ARP, only the primary interface will receive DHCP unicast messages for other interfaces.
As such we need to re-direct them to the correct interface by examining
This means we have to relax the BPF filters to allow more through.
- Kernels supporting RFC5227 will double ARP announce the address.
- NetBSD-8 kernels needed some love to get it to work and there's still an issue with it not working when an address is deleted from the interface.
Only the last bullet is really important, which is mainly why the changeset hasn't hit the master branch yet. But that should be fixed soon. The other points can be fixed as and when.
I rarely talk about work here. But in this case I will because although it's unrelated entirely to my Open Source projects it's actually very enjoyable for a change because we have the change to use some cutting edge tech. Like any large and old product there are crusty bits - some of ours are so crusty they are implemented in Visual Basic 6. So Management have give us the green light to replace a large chunk of that and now that we're part of a bigger business (the joy's of being bought by a large company) we have a mandate to use relevant tech. So I'm learning all about ASP.NET Core and Entity Framework Core. We'll be creating MicroServices talking to an API Gateway, each in a Docker Container. We'll mandate that each project has to have no compile warnings and uses StyleCopy Analyzers. Also we must have unit tests across the board. Each checkin will trigger a static analysis by Sonar Qube. This will be a full Continuous Integration Pipeline.
This is a massive change from the way we've worked before and it excites me! The bad news is that I am spending some of my hobby time on this because it's fun! But I should be getting back onto dhcpcd / NetBSD related stuff soon once the initial prototypes are in place and the new tech feeling wears off.