1// Copyright 2016 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5//go:build dragonfly || freebsd || netbsd
6// +build dragonfly freebsd netbsd
7
8package route
9
10func (w *wireFormat) parseInterfaceAnnounceMessage(_ RIBType, b []byte) (Message, error) {
11	if len(b) < w.bodyOff {
12		return nil, errMessageTooShort
13	}
14	l := int(nativeEndian.Uint16(b[:2]))
15	if len(b) < l {
16		return nil, errInvalidMessage
17	}
18	m := &InterfaceAnnounceMessage{
19		Version: int(b[2]),
20		Type:    int(b[3]),
21		Index:   int(nativeEndian.Uint16(b[4:6])),
22		What:    int(nativeEndian.Uint16(b[22:24])),
23		raw:     b[:l],
24	}
25	for i := 0; i < 16; i++ {
26		if b[6+i] != 0 {
27			continue
28		}
29		m.Name = string(b[6 : 6+i])
30		break
31	}
32	return m, nil
33}
34