code: func (v *VLAN) UnmarshalBinary(b []byte) error {
  	// VLAN tag is always 2 bytes
  	if len(b) != 2 {
  		return io.ErrUnexpectedEOF
  	}
  
  	//  3 bits: priority
  	//  1 bit : drop eligible
  	// 12 bits: VLAN ID
  	ub := binary.BigEndian.Uint16(b[0:2])
  	v.Priority = Priority(uint8(ub >> 13))
  	v.DropEligible = ub&0x1000 != 0
  	v.ID = ub & 0x0fff
  
  	// Check for VLAN ID in valid range
  	if v.ID >= VLANMax {
  		return ErrInvalidVLAN
  	}
  
  	return nil
  }
docs: // UnmarshalBinary unmarshals a byte slice into a VLAN.