code: func (h *Handle) NeighListExecute(msg Ndmsg) ([]Neigh, error) {
  	req := h.newNetlinkRequest(unix.RTM_GETNEIGH, unix.NLM_F_DUMP)
  	req.AddData(&msg)
  
  	msgs, err := req.Execute(unix.NETLINK_ROUTE, unix.RTM_NEWNEIGH)
  	if err != nil {
  		return nil, err
  	}
  
  	var res []Neigh
  	for _, m := range msgs {
  		ndm := deserializeNdmsg(m)
  		if msg.Index != 0 && ndm.Index != msg.Index {
  			// Ignore messages from other interfaces
  			continue
  		}
  
  		neigh, err := NeighDeserialize(m)
  		if err != nil {
  			continue
  		}
  
  		res = append(res, *neigh)
  	}
  
  	return res, nil
  }
docs: // NeighListExecute returns a list of neighbour entries filtered by link, ip family, flag and state.