code: func (h *Handle) DevLinkGetDeviceList() ([]*DevlinkDevice, error) {
  	f, err := h.GenlFamilyGet(nl.GENL_DEVLINK_NAME)
  	if err != nil {
  		return nil, err
  	}
  	msg := &nl.Genlmsg{
  		Command: nl.DEVLINK_CMD_GET,
  		Version: nl.GENL_DEVLINK_VERSION,
  	}
  	req := h.newNetlinkRequest(int(f.ID),
  		unix.NLM_F_REQUEST|unix.NLM_F_ACK|unix.NLM_F_DUMP)
  	req.AddData(msg)
  	msgs, err := req.Execute(unix.NETLINK_GENERIC, 0)
  	if err != nil {
  		return nil, err
  	}
  	devices, err := parseDevLinkDeviceList(msgs)
  	if err != nil {
  		return nil, err
  	}
  	for _, d := range devices {
  		h.getEswitchAttrs(f, d)
  	}
  	return devices, nil
  }
docs: // DevLinkGetDeviceList provides a pointer to devlink devices and nil error,
  // otherwise returns an error code.