func ParseFSEIDFields(b []byte) (*FSEIDFields, error) {
	f := &FSEIDFields{}
	if err := f.UnmarshalBinary(b); err != nil {
		return nil, err
	}
	return f, nil
}
ParseFSEIDFields parses b into FSEIDFields.
package ie
import (
	"encoding/binary"
	"io"
	"net"
)
func NewFSEID(seid uint64, v4, v6 net.IP) *IE {
	fields := NewFSEIDFields(seid, v4, v6)
	b, err := fields.Marshal()
	if err != nil {
		return nil
	}
	return New(FSEID, b)
}
func (i *IE) FSEID() (*FSEIDFields, error) {
	if i.Type != FSEID {
		return nil, &InvalidTypeError{Type: i.Type}
	}
	fields, err := ParseFSEIDFields(i.Payload)
	if err != nil {
		return nil, err
	}
	return fields, nil
}
type FSEIDFields struct {
	Flags       uint8
	SEID        uint64
	IPv4Address net.IP
	IPv6Address net.IP
}
func NewFSEIDFields(seid uint64, v4, v6 net.IP) *FSEIDFields {
	f := &FSEIDFields{
		SEID:        seid,
		IPv4Address: v4,
		IPv6Address: v6,
	}
	if v4 != nil {
		f.SetIPv4Flag()
	}
	if v6 != nil {
		f.SetIPv6Flag()
	}
	return f
}
func (f *FSEIDFields) HasIPv4() bool {
	return has2ndBit(f.Flags)
}
func (f *FSEIDFields) SetIPv4Flag() {
	f.Flags |= 0x02
}
func (f *FSEIDFields) HasIPv6() bool {
	return has1stBit(f.Flags)
}
func (f *FSEIDFields) SetIPv6Flag() {
	f.Flags |= 0x01
}