mirror of
https://github.com/netbirdio/netbird.git
synced 2025-08-17 02:21:47 +02:00
38 lines
894 B
Go
38 lines
894 B
Go
package android
|
|
|
|
import (
|
|
"fmt"
|
|
"net/netip"
|
|
|
|
"github.com/netbirdio/netbird/client/internal/dns"
|
|
)
|
|
|
|
// DNSList is a wrapper of []netip.AddrPort with default DNS port
|
|
type DNSList struct {
|
|
items []netip.AddrPort
|
|
}
|
|
|
|
// Add new DNS address to the collection, returns error if invalid
|
|
func (array *DNSList) Add(s string) error {
|
|
addr, err := netip.ParseAddr(s)
|
|
if err != nil {
|
|
return fmt.Errorf("invalid DNS address: %s", s)
|
|
}
|
|
addrPort := netip.AddrPortFrom(addr.Unmap(), dns.DefaultPort)
|
|
array.items = append(array.items, addrPort)
|
|
return nil
|
|
}
|
|
|
|
// Get return an element of the collection as string
|
|
func (array *DNSList) Get(i int) (string, error) {
|
|
if i >= len(array.items) || i < 0 {
|
|
return "", fmt.Errorf("out of range")
|
|
}
|
|
return array.items[i].Addr().String(), nil
|
|
}
|
|
|
|
// Size return with the size of the collection
|
|
func (array *DNSList) Size() int {
|
|
return len(array.items)
|
|
}
|