Fixing this required the removal of the code that attempted to detect virtual interfaces. Not wanting to remove functionality, but not able to keep the code in place, I implemented a work around solution (see 4 below).
Whilst in the area, I also fixed a few minor bugs i encountered (1, 5, 6 below) and stopped SSDP messages from going out on non-LAN interfaces (3)
All these changes are related.
Changes
1 IsInPrivateAddressSpace - improved subnet code checking
2 interfaces with no gateway were being excluded from SSDP blasts
3 filtered SSDP blasts from not LAN addresses as defined on the network page.
4 removed #986 mod - as this was part of the issue of #2986. Interfaces can be excluded from the LAN by putting the LAN address in brackets. eg. [10.1.1.1] will exclude an interface with ip address 10.1.1.1 from SSDP
5 fixed a problem where an invalid LAN address causing the SSDP to crash
6 corrected local link filter (FilterIPAddress) to filter on 169.254. addresses
Added maxlength to SourceId text field in Metadata entity.
Added extra fields to Person entity and adjusted SourceId length to 255.
Added Extra Nuget deps for Relational databases and added Default Sqlite connection string.
Made LibraryItem and Metadata abstract.
Added artwork, changed DbSet names, added Seasons, added Genres, removed Language enum
Add MediaFIleKind, add CustomVideos, add Books.
Add AdditionalStream
Updated GUIDs.
Remove merge artifacts.
Updated Language to use ISO-639-3 3 letter language codes.
Added collections and concurrency tokens.
Added chapters.
Added Photos and renamed CustomVideo to CustomItem.
Started adding fields.
Added extra fields and Company entities.
Implement a first pass of user permissions for the new database schema
Upgrade to v2 of the addon. Commit generated files.
Update comment, rename namespace and remove superflous field.
Un-ignore any generated code.
Clean up the model files and other left overs.
These properties do not provide any useful information to the client. The client would already have to have all this information in order to connect to the endpoint to retrieve it