code: func (b *NexthopLookupBody) DecodeFromBytes(data []byte, version uint8) error {
  	family := addressFamilyFromApi(b.Api, version)
  	addrByteLen, err := addressByteLength(family)
  	if err != nil {
  		return err
  	}
  
  	if len(data) < addrByteLen {
  		return fmt.Errorf("message length invalid")
  	}
  
  	buf := make([]byte, addrByteLen)
  	copy(buf, data[0:addrByteLen])
  	pos := addrByteLen
  	b.Addr = ipFromFamily(family, buf)
  
  	if version >= 4 {
  		b.Distance = data[pos]
  		pos++
  	}
  
  	if len(data[pos:]) > int(1+addrByteLen) {
  		b.Metric = binary.BigEndian.Uint32(data[pos : pos+4])
  		pos += 4
  		b.Nexthops = []Nexthop{}
  		if nexthopsByteLen, err := decodeNexthopsFromBytes(&b.Nexthops, data[pos:], family, version); err != nil {
  			return err
  		} else {
  			pos += nexthopsByteLen
  		}
  	}
  
  	return nil
  }
docs: // Quagga only. Reference: zsend_ipv[4|6]_nexthop_lookup in zebra/zserv.c of Quagga1.2.x (ZAPI3)