Files
govpp-snmp-agentx/go-agentx/pdu/header_packet.go

39 lines
852 B
Go

// Copyright 2018 The agentx authors
// Licensed under the LGPLv3 with static-linking exception.
// See LICENCE file for details.
package pdu
import (
"fmt"
)
// HeaderPacket defines a container structure for a header and a packet.
type HeaderPacket struct {
Header *Header
Packet Packet
}
// MarshalBinary returns the pdu packet as a slice of bytes.
func (hp *HeaderPacket) MarshalBinary() ([]byte, error) {
payloadBytes, err := hp.Packet.MarshalBinary()
if err != nil {
return nil, err
}
hp.Header.Version = 1
hp.Header.Type = hp.Packet.Type()
hp.Header.PayloadLength = uint32(len(payloadBytes))
result, err := hp.Header.MarshalBinary()
if err != nil {
return nil, err
}
return append(result, payloadBytes...), nil
}
func (hp *HeaderPacket) String() string {
return fmt.Sprintf("[head %v, body %v]", hp.Header, hp.Packet)
}