Temporarily add go-agentx (w/ fixes to lexico ordering)

This commit is contained in:
Pim van Pelt
2025-06-09 17:14:28 +02:00
parent 824496c402
commit 771cc6ff48
45 changed files with 2477 additions and 0 deletions

View File

@ -0,0 +1,56 @@
// Copyright 2018 The agentx authors
// Licensed under the LGPLv3 with static-linking exception.
// See LICENCE file for details.
package pdu
import (
"strings"
"github.com/posteo/go-agentx/value"
)
// Variables defines a list of variable bindings.
type Variables []Variable
// Add adds the provided variable.
func (v *Variables) Add(oid value.OID, t VariableType, value interface{}) {
variable := Variable{}
variable.Set(oid, t, value)
*v = append(*v, variable)
}
// MarshalBinary returns the pdu packet as a slice of bytes.
func (v *Variables) MarshalBinary() ([]byte, error) {
result := []byte{}
for _, variable := range *v {
data, err := variable.MarshalBinary()
if err != nil {
return nil, err
}
result = append(result, data...)
}
return result, nil
}
// UnmarshalBinary sets the packet structure from the provided slice of bytes.
func (v *Variables) UnmarshalBinary(data []byte) error {
*v = make([]Variable, 0)
for offset := 0; offset < len(data); {
variable := Variable{}
if err := variable.UnmarshalBinary(data[offset:]); err != nil {
return err
}
*v = append(*v, variable)
offset += variable.ByteSize()
}
return nil
}
func (v Variables) String() string {
parts := make([]string, len(v))
for index, va := range v {
parts[index] = va.String()
}
return "[variables " + strings.Join(parts, ", ") + "]"
}