134 lines
3.7 KiB
Go
134 lines
3.7 KiB
Go
package gonetworkmanager
|
|
|
|
import (
|
|
"encoding/json"
|
|
|
|
"github.com/godbus/dbus"
|
|
)
|
|
|
|
const (
|
|
IP6ConfigInterface = NetworkManagerInterface + ".IP6Config"
|
|
|
|
/* Properties */
|
|
IP6ConfigPropertyAddresses = IP6ConfigInterface + ".Addresses" // readable a(ayuay)
|
|
IP6ConfigPropertyAddressData = IP6ConfigInterface + ".AddressData" // readable aa{sv}
|
|
IP6ConfigPropertyGateway = IP6ConfigInterface + ".Gateway" // readable s
|
|
IP6ConfigPropertyRoutes = IP6ConfigInterface + ".Routes" // readable a(ayuayu)
|
|
IP6ConfigPropertyRouteData = IP6ConfigInterface + ".RouteData" // readable aa{sv}
|
|
IP6ConfigPropertyNameservers = IP6ConfigInterface + ".Nameservers" // readable aay
|
|
IP6ConfigPropertyDomains = IP6ConfigInterface + ".Domains" // readable as
|
|
IP6ConfigPropertySearches = IP6ConfigInterface + ".Searches" // readable as
|
|
IP6ConfigPropertyDnsOptions = IP6ConfigInterface + ".DnsOptions" // readable as
|
|
IP6ConfigPropertyDnsPriority = IP6ConfigInterface + ".DnsPriority" // readable i
|
|
)
|
|
|
|
// Deprecated: use IP6AddressData instead
|
|
type IP6Address struct {
|
|
Address string
|
|
Prefix uint8
|
|
Gateway string
|
|
}
|
|
|
|
type IP6AddressData struct {
|
|
Address string
|
|
Prefix uint8
|
|
}
|
|
|
|
// Deprecated: use IP6RouteData instead
|
|
type IP6Route struct {
|
|
Route string
|
|
Prefix uint8
|
|
NextHop string
|
|
Metric uint8
|
|
}
|
|
|
|
type IP6RouteData struct {
|
|
Destination string
|
|
Prefix uint8
|
|
NextHop string
|
|
Metric uint8
|
|
AdditionalAttributes []string
|
|
}
|
|
|
|
type IP6NameserverData struct {
|
|
Address string
|
|
}
|
|
|
|
type IP6Config interface {
|
|
|
|
// Array of IP address data objects. All addresses will include "address" (an IP address string), and "prefix" (a uint). Some addresses may include additional attributes.
|
|
GetAddressData() []IP6AddressData
|
|
|
|
// The gateway in use.
|
|
GetGateway() string
|
|
|
|
// Array of IP route data objects. All routes will include "dest" (an IP address string) and "prefix" (a uint). Some routes may include "next-hop" (an IP address string), "metric" (a uint), and additional attributes.
|
|
GetRouteData() []IP6RouteData
|
|
|
|
// GetNameservers gets the nameservers in use.
|
|
GetNameservers() []IP6NameserverData
|
|
|
|
// A list of domains this address belongs to.
|
|
GetDomains() []string
|
|
|
|
// A list of dns searches.
|
|
GetSearches() []string
|
|
|
|
// A list of DNS options that modify the behavior of the DNS resolver. See resolv.conf(5) manual page for the list of supported options.
|
|
GetDnsOptions() []string
|
|
|
|
// The relative priority of DNS servers.
|
|
GetDnsPriority() uint32
|
|
|
|
MarshalJSON() ([]byte, error)
|
|
}
|
|
|
|
func NewIP6Config(objectPath dbus.ObjectPath) (IP6Config, error) {
|
|
var c ip6Config
|
|
return &c, c.init(NetworkManagerInterface, objectPath)
|
|
}
|
|
|
|
type ip6Config struct {
|
|
dbusBase
|
|
}
|
|
|
|
func (c *ip6Config) GetAddressData() []IP6AddressData {
|
|
return []IP6AddressData{}
|
|
}
|
|
|
|
func (c *ip6Config) GetGateway() string {
|
|
return c.getStringProperty(IP6ConfigPropertyGateway)
|
|
}
|
|
|
|
func (c *ip6Config) GetRouteData() []IP6RouteData {
|
|
return []IP6RouteData{}
|
|
}
|
|
|
|
func (c *ip6Config) GetNameservers() []IP6NameserverData {
|
|
return []IP6NameserverData{}
|
|
}
|
|
|
|
func (c *ip6Config) GetDomains() []string {
|
|
return c.getSliceStringProperty(IP6ConfigPropertyDomains)
|
|
}
|
|
|
|
func (c *ip6Config) GetSearches() []string {
|
|
return c.getSliceStringProperty(IP6ConfigPropertySearches)
|
|
}
|
|
|
|
func (c *ip6Config) GetDnsOptions() []string {
|
|
return c.getSliceStringProperty(IP6ConfigPropertyDnsOptions)
|
|
}
|
|
|
|
func (c *ip6Config) GetDnsPriority() uint32 {
|
|
return c.getUint32Property(IP6ConfigPropertyDnsPriority)
|
|
}
|
|
|
|
func (c *ip6Config) MarshalJSON() ([]byte, error) {
|
|
return json.Marshal(map[string]interface{}{
|
|
"Addresses": c.GetAddressData(),
|
|
"Routes": c.GetRouteData(),
|
|
"Nameservers": c.GetNameservers(),
|
|
"Domains": c.GetDomains(),
|
|
})
|
|
}
|