<div dir="ltr"><div>So I've been doing some work on getting UISP integration (and integrations in general) to work a bit more smoothly.</div><div><br></div><div>I started by implementing a graph structure that mirrors both the networks and sites system. It's not done yet, but the basics are coming together nicely. You can see my progress so far at: <a href="https://github.com/thebracket/LibreQoS/tree/integration-common-graph">https://github.com/thebracket/LibreQoS/tree/integration-common-graph</a></div><div><br></div><div>Our UISP instance is a <i>great</i> testcase for torturing the system. I even found a case of UISP somehow auto-generating a circular portion of the tree. We have:</div><div><ul><li>Non Ubiquiti devices as "other devices"</li><li>Sections that need shaping by subnet (e.g. "all of <a href="http://192.168.1.0/24">192.168.1.0/24</a> shared 100 mbit")</li><li>Bridge mode devices using Option 82 to always allocate the same IP, with a "service IP" entry</li><li>Various bits of infrastructure mapped</li><li>Sites that go to client sites, which go to other client sites</li></ul><div>In other words, over the years we've unleashed a bit of a monster. Cleaning it up is a useful talk, but I wanted the integration to be able to handle pathological cases like us!</div><div><br></div><div>So I fed our network into the current graph generator, and used graphviz to spit out a directed graph:</div><div><img src="cid:ii_l9rkwmjp0" alt="image.png" width="558" height="426"><br></div><div>That doesn't include client sites! Legend:</div><div><br></div><div><ul><li>Green = the root site.</li><li>Red = a site</li><li>Blue = an access point</li><li>Magenta = a client site that has children</li></ul><div>So the part in "common" is designed heavily to reduce repetition. When it's done, you should be able to feed in sites, APs, clients, devices, etc. in a pretty flexible manner. Given how much code is shared between the UISP and Splynx integration code, I'm pretty sure both will be cut to a tiny fraction of the total code. :-)</div><div><br></div><div>I can't post the full tree, it's full of client names.<br></div></div></div></div>