aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--build/gobind-pinecone/monolith.go52
-rw-r--r--go.mod2
-rw-r--r--go.sum4
3 files changed, 43 insertions, 15 deletions
diff --git a/build/gobind-pinecone/monolith.go b/build/gobind-pinecone/monolith.go
index 4a96e4be..adb4e40a 100644
--- a/build/gobind-pinecone/monolith.go
+++ b/build/gobind-pinecone/monolith.go
@@ -101,18 +101,46 @@ func (m *DendriteMonolith) SessionCount() int {
return len(m.PineconeQUIC.Protocol("matrix").Sessions())
}
-func (m *DendriteMonolith) RegisterNetworkInterface(name string, index int, mtu int, up bool, broadcast bool, loopback bool, pointToPoint bool, multicast bool, addrs string) {
- m.PineconeMulticast.RegisterInterface(pineconeMulticast.InterfaceInfo{
- Name: name,
- Index: index,
- Mtu: mtu,
- Up: up,
- Broadcast: broadcast,
- Loopback: loopback,
- PointToPoint: pointToPoint,
- Multicast: multicast,
- Addrs: addrs,
- })
+type InterfaceInfo struct {
+ Name string
+ Index int
+ Mtu int
+ Up bool
+ Broadcast bool
+ Loopback bool
+ PointToPoint bool
+ Multicast bool
+ Addrs string
+}
+
+type InterfaceRetriever interface {
+ CacheCurrentInterfaces() int
+ GetCachedInterface(index int) *InterfaceInfo
+}
+
+func (m *DendriteMonolith) RegisterNetworkCallback(intfCallback InterfaceRetriever) {
+ callback := func() []pineconeMulticast.InterfaceInfo {
+ count := intfCallback.CacheCurrentInterfaces()
+ intfs := []pineconeMulticast.InterfaceInfo{}
+ for i := 0; i < count; i++ {
+ iface := intfCallback.GetCachedInterface(i)
+ if iface != nil {
+ intfs = append(intfs, pineconeMulticast.InterfaceInfo{
+ Name: iface.Name,
+ Index: iface.Index,
+ Mtu: iface.Mtu,
+ Up: iface.Up,
+ Broadcast: iface.Broadcast,
+ Loopback: iface.Loopback,
+ PointToPoint: iface.PointToPoint,
+ Multicast: iface.Multicast,
+ Addrs: iface.Addrs,
+ })
+ }
+ }
+ return intfs
+ }
+ m.PineconeMulticast.RegisterNetworkCallback(callback)
}
func (m *DendriteMonolith) SetMulticastEnabled(enabled bool) {
diff --git a/go.mod b/go.mod
index 39dfb0fe..be5099fc 100644
--- a/go.mod
+++ b/go.mod
@@ -23,7 +23,7 @@ require (
github.com/matrix-org/go-sqlite3-js v0.0.0-20220419092513-28aa791a1c91
github.com/matrix-org/gomatrix v0.0.0-20220926102614-ceba4d9f7530
github.com/matrix-org/gomatrixserverlib v0.0.0-20221025142407-17b0be811afa
- github.com/matrix-org/pinecone v0.0.0-20221007145426-3adc85477dd3
+ github.com/matrix-org/pinecone v0.0.0-20221026160848-639feeff74d6
github.com/matrix-org/util v0.0.0-20200807132607-55161520e1d4
github.com/mattn/go-sqlite3 v1.14.15
github.com/nats-io/nats-server/v2 v2.9.3
diff --git a/go.sum b/go.sum
index 5e625386..c7903b0c 100644
--- a/go.sum
+++ b/go.sum
@@ -389,8 +389,8 @@ github.com/matrix-org/gomatrix v0.0.0-20220926102614-ceba4d9f7530 h1:kHKxCOLcHH8
github.com/matrix-org/gomatrix v0.0.0-20220926102614-ceba4d9f7530/go.mod h1:/gBX06Kw0exX1HrwmoBibFA98yBk/jxKpGVeyQbff+s=
github.com/matrix-org/gomatrixserverlib v0.0.0-20221025142407-17b0be811afa h1:S98DShDv3sn7O4n4HjtJOejypseYVpv1R/XPg+cDnfI=
github.com/matrix-org/gomatrixserverlib v0.0.0-20221025142407-17b0be811afa/go.mod h1:Mtifyr8q8htcBeugvlDnkBcNUy5LO8OzUoplAf1+mb4=
-github.com/matrix-org/pinecone v0.0.0-20221007145426-3adc85477dd3 h1:lzkSQvBv8TuqKJCPoVwOVvEnARTlua5rrNy/Qw2Vxeo=
-github.com/matrix-org/pinecone v0.0.0-20221007145426-3adc85477dd3/go.mod h1:K0N1ixHQxXoCyqolDqVxPM3ArrDtcMs8yegOx2Lfv9k=
+github.com/matrix-org/pinecone v0.0.0-20221026160848-639feeff74d6 h1:nAT5w41Q9uWTSnpKW55/hBwP91j2IFYPDRs0jJ8TyFI=
+github.com/matrix-org/pinecone v0.0.0-20221026160848-639feeff74d6/go.mod h1:K0N1ixHQxXoCyqolDqVxPM3ArrDtcMs8yegOx2Lfv9k=
github.com/matrix-org/util v0.0.0-20200807132607-55161520e1d4 h1:eCEHXWDv9Rm335MSuB49mFUK44bwZPFSDde3ORE3syk=
github.com/matrix-org/util v0.0.0-20200807132607-55161520e1d4/go.mod h1:vVQlW/emklohkZnOPwD3LrZUBqdfsbiyO3p1lNV8F6U=
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=