Print this page
patch tsoome-feedback


  57         hdl->agent_errno = err;
  58         return (-1);
  59 }
  60 
  61 const char *
  62 fmd_agent_strerr(int err)
  63 {
  64         return (strerror(err));
  65 }
  66 
  67 const char *
  68 fmd_agent_errmsg(fmd_agent_hdl_t *hdl)
  69 {
  70         return (fmd_agent_strerr(hdl->agent_errno));
  71 }
  72 
  73 static int
  74 cleanup_set_errno(fmd_agent_hdl_t *hdl, nvlist_t *innvl, nvlist_t *outnvl,
  75     int err)
  76 {
  77         if (innvl != NULL)
  78                 nvlist_free(innvl);
  79         if (outnvl != NULL)
  80                 nvlist_free(outnvl);
  81         return (fmd_agent_seterrno(hdl, err));
  82 }
  83 
  84 /*
  85  * Perform /dev/fm ioctl.  The input and output data are represented by
  86  * name-value lists (nvlists).
  87  */
  88 int
  89 fmd_agent_nvl_ioctl(fmd_agent_hdl_t *hdl, int cmd, uint32_t ver,
  90     nvlist_t *innvl, nvlist_t **outnvlp)
  91 {
  92         fm_ioc_data_t fid;
  93         int err = 0;
  94         char *inbuf = NULL, *outbuf = NULL;
  95         size_t insz = 0, outsz = 0;
  96 
  97         if (innvl != NULL) {
  98                 if ((err = nvlist_size(innvl, &insz, NV_ENCODE_NATIVE)) != 0)
  99                         return (err);




  57         hdl->agent_errno = err;
  58         return (-1);
  59 }
  60 
  61 const char *
  62 fmd_agent_strerr(int err)
  63 {
  64         return (strerror(err));
  65 }
  66 
  67 const char *
  68 fmd_agent_errmsg(fmd_agent_hdl_t *hdl)
  69 {
  70         return (fmd_agent_strerr(hdl->agent_errno));
  71 }
  72 
  73 static int
  74 cleanup_set_errno(fmd_agent_hdl_t *hdl, nvlist_t *innvl, nvlist_t *outnvl,
  75     int err)
  76 {

  77         nvlist_free(innvl);

  78         nvlist_free(outnvl);
  79         return (fmd_agent_seterrno(hdl, err));
  80 }
  81 
  82 /*
  83  * Perform /dev/fm ioctl.  The input and output data are represented by
  84  * name-value lists (nvlists).
  85  */
  86 int
  87 fmd_agent_nvl_ioctl(fmd_agent_hdl_t *hdl, int cmd, uint32_t ver,
  88     nvlist_t *innvl, nvlist_t **outnvlp)
  89 {
  90         fm_ioc_data_t fid;
  91         int err = 0;
  92         char *inbuf = NULL, *outbuf = NULL;
  93         size_t insz = 0, outsz = 0;
  94 
  95         if (innvl != NULL) {
  96                 if ((err = nvlist_size(innvl, &insz, NV_ENCODE_NATIVE)) != 0)
  97                         return (err);