-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlan.go
87 lines (70 loc) · 1.64 KB
/
lan.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
package tendone
import (
"encoding/json"
"errors"
)
type lanConfigGetRequestWrap struct {
Config interface{} `json:"lanCfgGet"`
}
type lanConfigGetResponseWrap struct {
Config LanConfig `json:"lanCfgGet"`
}
type EthMode string
var ErrInvalidEthMode = errors.New("Invalid EthMode")
const (
EthModeAuto EthMode = "auto"
EthMode10M EthMode = "10M"
)
func isValidEthMode(em EthMode) bool {
switch em {
case EthModeAuto, EthMode10M:
return true
}
return false
}
type LanConfig struct {
Type string `json:"lanType"`
DeviceName string `json:"deviceName"`
MAC string `json:"lanMac"`
IP string `json:"lanIp"`
Mask string `json:"lanMask"`
Gateway string `json:"lanGw"`
DNS0 string `json:"preDns"`
DNS1 string `json:"altDns"`
EthMode EthMode `json:"ethMode"`
}
type lanConfigSetRequestWrap struct {
Config LanConfig `json:"lanCfgSet"`
}
type lanConfigSetResponseWrap struct {
Resp string `json:"lanCfgSet"`
}
func (s *Session) LanConfigGet() (*LanConfig, error) {
rbody, err := json.Marshal(lanConfigGetRequestWrap{})
resp, err := fetch(s, rbody)
if err != nil {
return nil, err
}
var lcr lanConfigGetResponseWrap
err = json.Unmarshal(resp, &lcr)
if err != nil {
return nil, err
}
return &lcr.Config, nil
}
func (s *Session) LanConfigSet(lc *LanConfig) (bool, error) {
rbody, err := json.Marshal(lanConfigSetRequestWrap{Config: *lc})
resp, err := fetch(s, rbody)
if err != nil {
return false, err
}
var lcs lanConfigSetResponseWrap
err = json.Unmarshal(resp, &lcs)
if err != nil {
return false, err
}
if lcs.Resp == "ok" {
return true, nil
}
return false, nil
}