add initial service definition

This commit is contained in:
Samuel Lorch 2023-03-01 18:17:52 +01:00
parent 9fe13b3589
commit 02c12cf90e

View file

@ -0,0 +1,49 @@
package definitions
import "encoding/json"
type Service struct {
Type ServiceType `json:"type"`
Comment string `json:"comment,omitempty"`
SPortStart *uint32 `json:"sport_start,omitempty"`
SPortEnd *uint32 `json:"sport_end,omitempty"`
DPortStart *uint32 `json:"dport_start,omitempty"`
DPortEnd *uint32 `json:"dport_end,omitempty"`
ICMPCode *uint32 `json:"icmp_code,omitempty"`
}
type ServiceType int
const (
TCP ServiceType = iota
UDP
TCPUDP
ICMP
)
func (t ServiceType) String() string {
return [...]string{"tcp", "udp", "tcpudp", "icmp"}[t]
}
func (t *ServiceType) FromString(input string) ServiceType {
return map[string]ServiceType{
"tcp": TCP,
"udp": UDP,
"tcpudp": TCPUDP,
"icmp": ICMP,
}[input]
}
func (t ServiceType) MarshalJSON() ([]byte, error) {
return json.Marshal(t.String())
}
func (t *ServiceType) UnmarshalJSON(b []byte) error {
var s string
err := json.Unmarshal(b, &s)
if err != nil {
return err
}
*t = t.FromString(s)
return nil
}