]> git.ipfire.org Git - thirdparty/wireguard-go.git/commitdiff
device: add UAPI helper methods
authorJason A. Donenfeld <Jason@zx2c4.com>
Tue, 22 Dec 2020 13:30:57 +0000 (14:30 +0100)
committerJason A. Donenfeld <Jason@zx2c4.com>
Tue, 22 Dec 2020 13:30:57 +0000 (14:30 +0100)
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
device/uapi.go

index 3f26607bb503ff71a96d6ce2152dfa04636d96c3..2843a4c20be37d5d677fae4e30ff8c0b6e9c60f7 100644 (file)
@@ -7,6 +7,7 @@ package device
 
 import (
        "bufio"
+       "bytes"
        "errors"
        "fmt"
        "io"
@@ -32,7 +33,7 @@ func (s IPCError) ErrorCode() int64 {
        return s.int64
 }
 
-func (device *Device) IpcGetOperation(socket *bufio.Writer) error {
+func (device *Device) IpcGetOperation(w io.StringWriter) error {
        lines := make([]string, 0, 100)
        send := func(line string) {
                lines = append(lines, line)
@@ -98,7 +99,7 @@ func (device *Device) IpcGetOperation(socket *bufio.Writer) error {
        // send lines (does not require resource locks)
 
        for _, line := range lines {
-               _, err := socket.WriteString(line + "\n")
+               _, err := w.WriteString(line + "\n")
                if err != nil {
                        return &IPCError{ipc.IpcErrorIO}
                }
@@ -396,6 +397,24 @@ func (device *Device) IpcSetOperation(r io.Reader) error {
        return nil
 }
 
+
+
+func (device *Device) IpcGet() (string, error) {
+       buf := new(bytes.Buffer)
+       writer := bufio.NewWriter(buf)
+       if err := device.IpcGetOperation(writer); err != nil {
+               return "", err
+       }
+       if err := writer.Flush(); err != nil {
+               return "", err
+       }
+       return buf.String(), nil
+}
+
+func (device *Device) IpcSet(uapiConf string) error {
+       return device.IpcSetOperation(bufio.NewReader(strings.NewReader(uapiConf)))
+}
+
 func (device *Device) IpcHandle(socket net.Conn) {
 
        // create buffered read/writer