/* ----------------------------------------------------------------------------
 * This file was automatically generated by SWIG (https://www.swig.org).
 * Version 4.4.0
 *
 * Do not make changes to this file unless you know what you are doing - modify
 * the SWIG interface file instead.
 * ----------------------------------------------------------------------------- */


#define SWIG_VERSION 0x040400
#define SWIGPERL
#define SWIG_CASTRANK_MODE

/* -----------------------------------------------------------------------------
 *  This section contains generic SWIG labels for method/variable
 *  declarations/attributes, and other compiler dependent labels.
 * ----------------------------------------------------------------------------- */

/* template workaround for compilers that cannot correctly implement the C++ standard */
#ifndef SWIGTEMPLATEDISAMBIGUATOR
# if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x560)
#  define SWIGTEMPLATEDISAMBIGUATOR template
# elif defined(__HP_aCC)
/* Needed even with `aCC -AA' when `aCC -V' reports HP ANSI C++ B3910B A.03.55 */
/* If we find a maximum version that requires this, the test would be __HP_aCC <= 35500 for A.03.55 */
#  define SWIGTEMPLATEDISAMBIGUATOR template
# else
#  define SWIGTEMPLATEDISAMBIGUATOR
# endif
#endif

/* inline attribute */
#ifndef SWIGINLINE
# if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__))
#   define SWIGINLINE inline
# else
#   define SWIGINLINE
# endif
#endif

/* attribute recognised by some compilers to avoid 'unused' warnings */
#ifndef SWIGUNUSED
# if defined(__GNUC__)
#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
#     define SWIGUNUSED __attribute__ ((__unused__))
#   else
#     define SWIGUNUSED
#   endif
# elif defined(__ICC)
#   define SWIGUNUSED __attribute__ ((__unused__))
# else
#   define SWIGUNUSED
# endif
#endif

#ifndef SWIG_MSC_UNSUPPRESS_4505
# if defined(_MSC_VER)
#   pragma warning(disable : 4505) /* unreferenced local function has been removed */
# endif
#endif

#ifndef SWIGUNUSEDPARM
# ifdef __cplusplus
#   define SWIGUNUSEDPARM(p)
# else
#   define SWIGUNUSEDPARM(p) p SWIGUNUSED
# endif
#endif

/* internal SWIG method */
#ifndef SWIGINTERN
# define SWIGINTERN static SWIGUNUSED
#endif

/* internal inline SWIG method */
#ifndef SWIGINTERNINLINE
# define SWIGINTERNINLINE SWIGINTERN SWIGINLINE
#endif

/* exporting methods */
#if defined(__GNUC__)
#  if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
#    ifndef GCC_HASCLASSVISIBILITY
#      define GCC_HASCLASSVISIBILITY
#    endif
#  endif
#endif

#ifndef SWIGEXPORT
# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
#   if defined(STATIC_LINKED)
#     define SWIGEXPORT
#   else
#     define SWIGEXPORT __declspec(dllexport)
#   endif
# else
#   if defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY)
#     define SWIGEXPORT __attribute__ ((visibility("default")))
#   else
#     define SWIGEXPORT
#   endif
# endif
#endif

/* calling conventions for Windows */
#ifndef SWIGSTDCALL
# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
#   define SWIGSTDCALL __stdcall
# else
#   define SWIGSTDCALL
# endif
#endif

/* Deal with Microsoft's attempt at deprecating C standard runtime functions */
#if !defined(SWIG_NO_CRT_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE)
# define _CRT_SECURE_NO_DEPRECATE
#endif

/* Deal with Microsoft's attempt at deprecating methods in the standard C++ library */
#if !defined(SWIG_NO_SCL_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_SCL_SECURE_NO_DEPRECATE)
# define _SCL_SECURE_NO_DEPRECATE
#endif

/* Deal with Apple's deprecated 'AssertMacros.h' from Carbon-framework */
#if defined(__APPLE__) && !defined(__ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES)
# define __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES 0
#endif

/* Intel's compiler complains if a variable which was never initialised is
 * cast to void, which is a common idiom which we use to indicate that we
 * are aware a variable isn't used.  So we just silence that warning.
 * See: https://github.com/swig/swig/issues/192 for more discussion.
 */
#ifdef __INTEL_COMPILER
# pragma warning disable 592
#endif

#if defined(__cplusplus) && __cplusplus >=201103L
# define SWIG_NOEXCEPT noexcept
#else
# define SWIG_NOEXCEPT throw()
#endif 

/* -----------------------------------------------------------------------------
 * swigcompat.swg
 *
 * Macros to provide support compatibility with older C and C++ standards.
 *
 * Note that SWIG expects __cplusplus to be defined to the appropriate C++ standard.
 * MSVC users are urged to check and examine the /Zc:__cplusplus compiler option.
 * See https://learn.microsoft.com/en-us/cpp/build/reference/zc-cplusplus.
 * ----------------------------------------------------------------------------- */

/* C99 and C++11 should provide snprintf, but define SWIG_NO_SNPRINTF
 * if you're missing it.
 */
#if ((defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L) || \
     (defined __cplusplus && __cplusplus >= 201103L) || \
     defined SWIG_HAVE_SNPRINTF) && \
    !defined SWIG_NO_SNPRINTF
# define SWIG_snprintf(O,S,F,A) snprintf(O,S,F,A)
# define SWIG_snprintf2(O,S,F,A,B) snprintf(O,S,F,A,B)
#else
/* Fallback versions ignore the buffer size, but most of our uses either have a
 * fixed maximum possible size or dynamically allocate a buffer that's large
 * enough.
 */
# define SWIG_snprintf(O,S,F,A) sprintf(O,F,A)
# define SWIG_snprintf2(O,S,F,A,B) sprintf(O,F,A,B)
#endif

/* -----------------------------------------------------------------------------
 * swigrun.swg
 *
 * This file contains generic C API SWIG runtime support for pointer
 * type checking.
 * ----------------------------------------------------------------------------- */

/* This should only be incremented when either the layout of swig_type_info changes,
   or for whatever reason, the runtime changes incompatibly */
#define SWIG_RUNTIME_VERSION "5"

/* define SWIG_TYPE_TABLE_NAME as "SWIG_TYPE_TABLE" */
#ifdef SWIG_TYPE_TABLE
# define SWIG_QUOTE_STRING(x) #x
# define SWIG_EXPAND_AND_QUOTE_STRING(x) SWIG_QUOTE_STRING(x)
# define SWIG_TYPE_TABLE_NAME SWIG_EXPAND_AND_QUOTE_STRING(SWIG_TYPE_TABLE)
#else
# define SWIG_TYPE_TABLE_NAME
#endif

/*
  You can use the SWIGRUNTIME and SWIGRUNTIMEINLINE macros for
  creating a static or dynamic library from the SWIG runtime code.
  In 99.9% of the cases, SWIG just needs to declare them as 'static'.

  But only do this if strictly necessary, ie, if you have problems
  with your compiler or suchlike.
*/

#ifndef SWIGRUNTIME
# define SWIGRUNTIME SWIGINTERN
#endif

#ifndef SWIGRUNTIMEINLINE
# define SWIGRUNTIMEINLINE SWIGRUNTIME SWIGINLINE
#endif

/*  Generic buffer size */
#ifndef SWIG_BUFFER_SIZE
# define SWIG_BUFFER_SIZE 1024
#endif

/* Flags for pointer conversions */
#define SWIG_POINTER_DISOWN        0x1
#define SWIG_CAST_NEW_MEMORY       0x2
#define SWIG_POINTER_NO_NULL       0x4
#define SWIG_POINTER_CLEAR         0x8
#define SWIG_POINTER_RELEASE       (SWIG_POINTER_CLEAR | SWIG_POINTER_DISOWN)

/* Flags for new pointer objects */
#define SWIG_POINTER_OWN           0x1


/*
   Flags/methods for returning states.

   The SWIG conversion methods, as ConvertPtr, return an integer
   that tells if the conversion was successful or not. And if not,
   an error code can be returned (see swigerrors.swg for the codes).

   Use the following macros/flags to set or process the returning
   states.

   In old versions of SWIG, code such as the following was usually written:

     if (SWIG_ConvertPtr(obj,vptr,ty.flags) != -1) {
       // success code
     } else {
       //fail code
     }

   Now you can be more explicit:

    int res = SWIG_ConvertPtr(obj,vptr,ty.flags);
    if (SWIG_IsOK(res)) {
      // success code
    } else {
      // fail code
    }

   which is the same really, but now you can also do

    Type *ptr;
    int res = SWIG_ConvertPtr(obj,(void **)(&ptr),ty.flags);
    if (SWIG_IsOK(res)) {
      // success code
      if (SWIG_IsNewObj(res) {
        ...
	delete *ptr;
      } else {
        ...
      }
    } else {
      // fail code
    }

   I.e., now SWIG_ConvertPtr can return new objects and you can
   identify the case and take care of the deallocation. Of course that
   also requires SWIG_ConvertPtr to return new result values, such as

      int SWIG_ConvertPtr(obj, ptr,...) {
        if (<obj is ok>) {
          if (<need new object>) {
            *ptr = <ptr to new allocated object>;
            return SWIG_NEWOBJ;
          } else {
            *ptr = <ptr to old object>;
            return SWIG_OLDOBJ;
          }
        } else {
          return SWIG_BADOBJ;
        }
      }

   Of course, returning the plain '0(success)/-1(fail)' still works, but you can be
   more explicit by returning SWIG_BADOBJ, SWIG_ERROR or any of the
   SWIG errors code.

   Finally, if the SWIG_CASTRANK_MODE is enabled, the result code
   allows returning the 'cast rank', for example, if you have this

       int food(double)
       int fooi(int);

   and you call

      food(1)   // cast rank '1'  (1 -> 1.0)
      fooi(1)   // cast rank '0'

   just use the SWIG_AddCast()/SWIG_CheckState()
*/

#define SWIG_OK                    (0)
/* Runtime errors are < 0 */
#define SWIG_ERROR                 (-1)
/* Errors in range -1 to -99 are in swigerrors.swg (errors for all languages including those not using the runtime) */
/* Errors in range -100 to -199 are language specific errors defined in *errors.swg */
/* Errors < -200 are generic runtime specific errors */
#define SWIG_ERROR_RELEASE_NOT_OWNED (-200)

#define SWIG_IsOK(r)               (r >= 0)
#define SWIG_ArgError(r)           ((r != SWIG_ERROR) ? r : SWIG_TypeError)

/* The CastRankLimit says how many bits are used for the cast rank */
#define SWIG_CASTRANKLIMIT         (1 << 8)
/* The NewMask denotes the object was created (using new/malloc) */
#define SWIG_NEWOBJMASK            (SWIG_CASTRANKLIMIT  << 1)
/* The TmpMask is for in/out typemaps that use temporary objects */
#define SWIG_TMPOBJMASK            (SWIG_NEWOBJMASK << 1)
/* Simple returning values */
#define SWIG_BADOBJ                (SWIG_ERROR)
#define SWIG_OLDOBJ                (SWIG_OK)
#define SWIG_NEWOBJ                (SWIG_OK | SWIG_NEWOBJMASK)
#define SWIG_TMPOBJ                (SWIG_OK | SWIG_TMPOBJMASK)
/* Check, add and del object mask methods */
#define SWIG_AddNewMask(r)         (SWIG_IsOK(r) ? (r | SWIG_NEWOBJMASK) : r)
#define SWIG_DelNewMask(r)         (SWIG_IsOK(r) ? (r & ~SWIG_NEWOBJMASK) : r)
#define SWIG_IsNewObj(r)           (SWIG_IsOK(r) && (r & SWIG_NEWOBJMASK))
#define SWIG_AddTmpMask(r)         (SWIG_IsOK(r) ? (r | SWIG_TMPOBJMASK) : r)
#define SWIG_DelTmpMask(r)         (SWIG_IsOK(r) ? (r & ~SWIG_TMPOBJMASK) : r)
#define SWIG_IsTmpObj(r)           (SWIG_IsOK(r) && (r & SWIG_TMPOBJMASK))

/* Cast-Rank Mode */
#if defined(SWIG_CASTRANK_MODE)
#  ifndef SWIG_TypeRank
#    define SWIG_TypeRank             unsigned long
#  endif
#  ifndef SWIG_MAXCASTRANK            /* Default cast allowed */
#    define SWIG_MAXCASTRANK          (2)
#  endif
#  define SWIG_CASTRANKMASK          ((SWIG_CASTRANKLIMIT) -1)
#  define SWIG_CastRank(r)           (r & SWIG_CASTRANKMASK)
SWIGINTERNINLINE int SWIG_AddCast(int r) {
  return SWIG_IsOK(r) ? ((SWIG_CastRank(r) < SWIG_MAXCASTRANK) ? (r + 1) : SWIG_ERROR) : r;
}
SWIGINTERNINLINE int SWIG_CheckState(int r) {
  return SWIG_IsOK(r) ? SWIG_CastRank(r) + 1 : 0;
}
#else /* no cast-rank mode */
#  define SWIG_AddCast(r) (r)
#  define SWIG_CheckState(r) (SWIG_IsOK(r) ? 1 : 0)
#endif


#include <string.h>

#ifdef __cplusplus
extern "C" {
#endif

typedef void *(*swig_converter_func)(void *, int *);
typedef struct swig_type_info *(*swig_dycast_func)(void **);

/* Structure to store information on one type */
typedef struct swig_type_info {
  const char             *name;			/* mangled name of this type */
  const char             *str;			/* human readable name of this type */
  swig_dycast_func        dcast;		/* dynamic cast function down a hierarchy */
  struct swig_cast_info  *cast;			/* linked list of types that can cast into this type */
  void                   *clientdata;		/* language specific type data */
  int                    owndata;		/* flag if the structure owns the clientdata */
} swig_type_info;

/* Structure to store a type and conversion function used for casting */
typedef struct swig_cast_info {
  swig_type_info         *type;			/* pointer to type that is equivalent to this type */
  swig_converter_func     converter;		/* function to cast the void pointers */
  struct swig_cast_info  *next;			/* pointer to next array of casts | pointer to cast hashed by value */
  unsigned int            value;		/* index of the last valid element in the array | typename hash value */
} swig_cast_info;

/* Structure used to store module information
 * Each module generates one structure like this, and the runtime collects
 * all of these structures and stores them in a circularly linked list.*/
typedef struct swig_module_info {
  swig_type_info         **types;		/* Array of pointers to swig_type_info structures that are in this module */
  size_t                 size;		        /* Number of types in this module */
  struct swig_module_info *next;		/* Pointer to next element in circularly linked list */
  swig_type_info         **type_initial;	/* Array of initially generated type structures */
  swig_cast_info         **cast_initial;	/* Array of initially generated casting structures */
  void                    *clientdata;		/* Language specific module data */
} swig_module_info;

/*
  Compare two type names skipping the space characters, therefore
  "char*" == "char *" and "Class<int>" == "Class<int >", etc.

  Return 0 when the two name types are equivalent, as in
  strncmp, but skipping ' '.
*/
SWIGRUNTIME int
SWIG_TypeNameComp(const char *f1, const char *l1,
		  const char *f2, const char *l2) {
  for (;(f1 != l1) && (f2 != l2); ++f1, ++f2) {
    while ((*f1 == ' ') && (f1 != l1)) ++f1;
    while ((*f2 == ' ') && (f2 != l2)) ++f2;
    if (*f1 != *f2) return (*f1 > *f2) ? 1 : -1;
  }
  return (int)((l1 - f1) - (l2 - f2));
}

/*
  Check type equivalence in a name list like <name1>|<name2>|...
  Return 0 if equal, -1 if nb < tb, 1 if nb > tb
*/
SWIGRUNTIME int
SWIG_TypeCmp(const char *nb, const char *tb) {
  int equiv = 1;
  const char* te = tb + strlen(tb);
  const char* ne = nb;
  while (equiv != 0 && *ne) {
    for (nb = ne; *ne; ++ne) {
      if (*ne == '|') break;
    }
    equiv = SWIG_TypeNameComp(nb, ne, tb, te);
    if (*ne) ++ne;
  }
  return equiv;
}

/*
  Check type equivalence in a name list like <name1>|<name2>|...
  Return 0 if not equal, 1 if equal
*/
SWIGRUNTIME int
SWIG_TypeEquiv(const char *nb, const char *tb) {
  return SWIG_TypeCmp(nb, tb) == 0 ? 1 : 0;
}

/*
 * Hash function for type name strings, based on maRushPrime1Hash (http://amsoftware.narod.ru/algo2.html)
 */
SWIGRUNTIME unsigned int SWIG_Hash(const char *str, unsigned int len) {
  const unsigned char *data = (const unsigned char *)str;
  unsigned int hash = len, i = 0, k;
  int rem = (int)len;

  while (rem >= (int)sizeof(unsigned int)) {
    k = *(unsigned int *)data;
    k += i++;
    hash ^= k;
    hash *= 171717;
    data += sizeof(unsigned int);
    rem -= sizeof(unsigned int);
  }

  switch (rem) {
    case 3: k = (unsigned int)(data[2]) << 16;
            k |= (unsigned int)(data[1]) << 8;
            k |= (unsigned int)(data[0]);
            k += i++;
            hash ^= k;
            hash *= 171717;
            break;
    case 2: k = (unsigned int)(data[1]) << 8;
            k |= (unsigned int)(data[0]);
            k += i++;
            hash ^= k;
            hash *= 171717;
            break;
    case 1: k = (unsigned int)(data[0]);
            k += i++;
            hash ^= k;
            hash *= 171717;
            break;
  }
  return hash;
}

/*
  Check the typename
*/
SWIGRUNTIME swig_cast_info *
SWIG_TypeCheck(const char *c, swig_type_info *ty) {
  static const unsigned int scan_threshold = 4;
  if (ty) {
    swig_cast_info *head = ty->cast;
    unsigned int hash_value = 0;
    int hashed = 0;

    while (head) {

      if (strcmp(head->type->name, c) == 0) {
        return head;
      }

      if (head->value) {
        swig_cast_info *iter;
        swig_cast_info *last = head + head->value;
        swig_cast_info *first = head + 1;
        int search = 1;

        if (!hashed) {
          if (head->value < scan_threshold) {
            for (iter = first; iter <= last; iter++) {
              if (strcmp(iter->type->name, c) == 0) {
                return iter;
              }
            }
            search = 0;
          } else {
            hashed = 1;
            hash_value = SWIG_Hash(c, (unsigned int)strlen(c));
          }
        }

        if (search) {
          /* Binary search over sorted <'next'|'value'> pairs */
          do {
            iter = first + ((last - first) >> 1);
            if (iter->value < hash_value) {
              first = iter + 1;
            } else if (iter->value == hash_value) {

              if (strcmp(iter->next->type->name, c) == 0) {
                return iter->next;
              }

              /* Hash collision check */
              for (last = iter + 1; last->next && last->value == hash_value; last++) {
                if (strcmp(last->next->type->name, c) == 0) {
                  return last->next;
                }
              }
              for (first = iter - 1; first != head && first->value == hash_value; first--) {
                if (strcmp(first->next->type->name, c) == 0) {
                  return first->next;
                }
              }
              break;
            } else
              last = iter - 1;
          } while (first <= last);
        }
      }
      head = head->next;
    }
  }
  return 0;
}

/*
  Check the type by type address
*/
SWIGRUNTIME swig_cast_info *
SWIG_TypeCheckStruct(const swig_type_info *from, swig_type_info *ty) {
  if (ty) {
    swig_cast_info *head = ty->cast;
    while (head) {
      if (head->type == from) {
        return head;
      }

      if (head->value) {
        swig_cast_info *iter;
        swig_cast_info *last = head + head->value;
        swig_cast_info *first = head + 1;

        /* Binary search over sorted array of casts */
        do {
          iter = first + ((last - first) >> 1);
          if (iter->type < from) {
            first = iter + 1;
          } else if (iter->type == from) {
            return iter;
          } else
            last = iter - 1;
        } while (first <= last);
      }
      head = head->next;
    }
  }
  return 0;
}

/*
  Cast a pointer up an inheritance hierarchy
*/
SWIGRUNTIMEINLINE void *
SWIG_TypeCast(swig_cast_info *ty, void *ptr, int *newmemory) {
  return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr, newmemory);
}

/*
   Dynamic pointer casting. Down an inheritance hierarchy
*/
SWIGRUNTIME swig_type_info *
SWIG_TypeDynamicCast(swig_type_info *ty, void **ptr) {
  swig_type_info *lastty = ty;
  if (!ty || !ty->dcast) return ty;
  while (ty && (ty->dcast)) {
    ty = (*ty->dcast)(ptr);
    if (ty) lastty = ty;
  }
  return lastty;
}

/*
  Return the name associated with this type
*/
SWIGRUNTIMEINLINE const char *
SWIG_TypeName(const swig_type_info *ty) {
  return ty->name;
}

/*
  Return the pretty name associated with this type,
  that is an unmangled type name in a form presentable to the user.
*/
SWIGRUNTIME const char *
SWIG_TypePrettyName(const swig_type_info *type) {
  /* The "str" field contains the equivalent pretty names of the
     type, separated by vertical-bar characters.  Choose the last
     name. It should be the most specific; a fully resolved name
     but not necessarily with default template parameters expanded. */
  if (!type) return NULL;
  if (type->str != NULL) {
    const char *last_name = type->str;
    const char *s;
    for (s = type->str; *s; s++)
      if (*s == '|') last_name = s+1;
    return last_name;
  }
  else
    return type->name;
}

/*
   Set the clientdata field for a type
*/
SWIGRUNTIME void
SWIG_TypeClientData(swig_type_info *ti, void *clientdata) {
  swig_cast_info *head = ti->cast;
  /* if (ti->clientdata == clientdata) return; */
  ti->clientdata = clientdata;

  while (head) {
    swig_cast_info *cast;
    for (cast = head; (cast - head) <= head->value; cast++) {
      if (!cast->converter) {
        swig_type_info *tc = cast->type;
        if (!tc->clientdata) {
          SWIG_TypeClientData(tc, clientdata);
        }
      }
    }
    head = head->next;
  }
}

SWIGRUNTIME void
SWIG_TypeNewClientData(swig_type_info *ti, void *clientdata) {
  SWIG_TypeClientData(ti, clientdata);
  ti->owndata = 1;
}

/*
  Search for a swig_type_info structure only by mangled name
  Search is a O(log #types)

  We start searching at module start, and finish searching when start == end.
  Note: if start == end at the beginning of the function, we go all the way around
  the circular list.
*/
SWIGRUNTIME swig_type_info *
SWIG_MangledTypeQueryModule(swig_module_info *start,
                            swig_module_info *end,
		            const char *name) {
  swig_module_info *iter = start;
  do {
    if (iter->size) {
      size_t l = 0;
      size_t r = iter->size - 1;
      do {
	/* since l+r >= 0, we can (>> 1) instead (/ 2) */
	size_t i = (l + r) >> 1;
	const char *iname = iter->types[i]->name;
	if (iname) {
	  int compare = strcmp(name, iname);
	  if (compare == 0) {
	    return iter->types[i];
	  } else if (compare < 0) {
	    if (i) {
	      r = i - 1;
	    } else {
	      break;
	    }
	  } else if (compare > 0) {
	    l = i + 1;
	  }
	} else {
	  break; /* should never happen */
	}
      } while (l <= r);
    }
    iter = iter->next;
  } while (iter != end);
  return 0;
}

/*
  Search for a swig_type_info structure for either a mangled name or a human readable name.
  It first searches the mangled names of the types, which is a O(log #types)
  If a type is not found it then searches the human readable names, which is O(#types).

  We start searching at module start, and finish searching when start == end.
  Note: if start == end at the beginning of the function, we go all the way around
  the circular list.
*/
SWIGRUNTIME swig_type_info *
SWIG_TypeQueryModule(swig_module_info *start,
                     swig_module_info *end,
		     const char *name) {
  /* STEP 1: Search the name field using binary search */
  swig_type_info *ret = SWIG_MangledTypeQueryModule(start, end, name);
  if (ret) {
    return ret;
  } else {
    /* STEP 2: If the type hasn't been found, do a complete search
       of the str field (the human readable name) */
    swig_module_info *iter = start;
    do {
      size_t i = 0;
      for (; i < iter->size; ++i) {
	if (iter->types[i]->str && (SWIG_TypeEquiv(iter->types[i]->str, name)))
	  return iter->types[i];
      }
      iter = iter->next;
    } while (iter != end);
  }

  /* neither found a match */
  return 0;
}

/*
   Pack binary data into a string
*/
SWIGRUNTIME char *
SWIG_PackData(char *c, void *ptr, size_t sz) {
  static const char hex[17] = "0123456789abcdef";
  const unsigned char *u = (unsigned char *) ptr;
  const unsigned char *eu =  u + sz;
  for (; u != eu; ++u) {
    unsigned char uu = *u;
    *(c++) = hex[(uu & 0xf0) >> 4];
    *(c++) = hex[uu & 0xf];
  }
  return c;
}

/*
   Unpack binary data from a string
*/
SWIGRUNTIME const char *
SWIG_UnpackData(const char *c, void *ptr, size_t sz) {
  unsigned char *u = (unsigned char *) ptr;
  const unsigned char *eu = u + sz;
  for (; u != eu; ++u) {
    char d = *(c++);
    unsigned char uu;
    if ((d >= '0') && (d <= '9'))
      uu = (unsigned char)((d - '0') << 4);
    else if ((d >= 'a') && (d <= 'f'))
      uu = (unsigned char)((d - ('a'-10)) << 4);
    else
      return (char *) 0;
    d = *(c++);
    if ((d >= '0') && (d <= '9'))
      uu |= (unsigned char)(d - '0');
    else if ((d >= 'a') && (d <= 'f'))
      uu |= (unsigned char)(d - ('a'-10));
    else
      return (char *) 0;
    *u = uu;
  }
  return c;
}

/*
   Pack 'void *' into a string buffer.
*/
SWIGRUNTIME char *
SWIG_PackVoidPtr(char *buff, void *ptr, const char *name, size_t bsz) {
  char *r = buff;
  if ((2*sizeof(void *) + 2) > bsz) return 0;
  *(r++) = '_';
  r = SWIG_PackData(r,&ptr,sizeof(void *));
  if (strlen(name) + 1 > (bsz - (r - buff))) return 0;
  strcpy(r,name);
  return buff;
}

SWIGRUNTIME const char *
SWIG_UnpackVoidPtr(const char *c, void **ptr, const char *name) {
  if (*c != '_') {
    if (strcmp(c,"NULL") == 0) {
      *ptr = (void *) 0;
      return name;
    } else {
      return 0;
    }
  }
  return SWIG_UnpackData(++c,ptr,sizeof(void *));
}

SWIGRUNTIME char *
SWIG_PackDataName(char *buff, void *ptr, size_t sz, const char *name, size_t bsz) {
  char *r = buff;
  size_t lname = (name ? strlen(name) : 0);
  if ((2*sz + 2 + lname) > bsz) return 0;
  *(r++) = '_';
  r = SWIG_PackData(r,ptr,sz);
  if (lname) {
    strncpy(r,name,lname+1);
  } else {
    *r = 0;
  }
  return buff;
}

SWIGRUNTIME const char *
SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name) {
  if (*c != '_') {
    if (strcmp(c,"NULL") == 0) {
      memset(ptr,0,sz);
      return name;
    } else {
      return 0;
    }
  }
  return SWIG_UnpackData(++c,ptr,sz);
}

#ifdef __cplusplus
}
#endif

/* SWIG Errors applicable to all language modules, values are reserved from -1 to -99 */
#define  SWIG_UnknownError    	   -1
#define  SWIG_IOError        	   -2
#define  SWIG_RuntimeError   	   -3
#define  SWIG_IndexError     	   -4
#define  SWIG_TypeError      	   -5
#define  SWIG_DivisionByZero 	   -6
#define  SWIG_OverflowError  	   -7
#define  SWIG_SyntaxError    	   -8
#define  SWIG_ValueError     	   -9
#define  SWIG_SystemError    	   -10
#define  SWIG_AttributeError 	   -11
#define  SWIG_MemoryError    	   -12
#define  SWIG_NullReferenceError   -13


#ifdef __cplusplus
/* Needed on some windows machines---since MS plays funny games with the header files under C++ */
#include <math.h>
#include <stdlib.h>
extern "C" {
#endif

#if __GNUC__ >= 10
#if defined(__cplusplus)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wvolatile"
#endif
#endif

#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"

#if __GNUC__ >= 10
#if defined(__cplusplus)
#pragma GCC diagnostic pop
#endif
#endif

/* PERL_REVISION was added in Perl 5.6. */
#if !defined PERL_REVISION || (PERL_REVISION-0 == 5 && PERL_VERSION-0 < 8)
# error SWIG requires Perl >= 5.8.0
#endif

#if defined(WIN32) && defined(PERL_OBJECT) && !defined(PerlIO_exportFILE)
#define PerlIO_exportFILE(fh,fl) (FILE*)(fh)
#endif

#ifndef SvIOK_UV
# define SvIOK_UV(sv)       (SvIOK(sv) && (SvUVX(sv) == SvIVX(sv)))
#endif

#ifndef SvUOK
# define SvUOK(sv)           SvIOK_UV(sv)
#endif

#ifndef IVSIZE
#  ifdef LONGSIZE
#    define IVSIZE LONGSIZE
#  else
#    define IVSIZE 4 /* A bold guess, but the best we can make. */
#  endif
#endif

#ifndef INT2PTR
#  if (IVSIZE == PTRSIZE) && (UVSIZE == PTRSIZE)
#    define PTRV                  UV
#    define INT2PTR(any,d)        (any)(d)
#  else
#    if PTRSIZE == LONGSIZE
#      define PTRV                unsigned long
#    else
#      define PTRV                unsigned
#    endif
#    define INT2PTR(any,d)        (any)(PTRV)(d)
#  endif

#  define NUM2PTR(any,d)  (any)(PTRV)(d)
#  define PTR2IV(p)       INT2PTR(IV,p)
#  define PTR2UV(p)       INT2PTR(UV,p)
#  define PTR2NV(p)       NUM2PTR(NV,p)

#  if PTRSIZE == LONGSIZE
#    define PTR2ul(p)     (unsigned long)(p)
#  else
#    define PTR2ul(p)     INT2PTR(unsigned long,p)
#  endif
#endif /* !INT2PTR */

#ifndef SvPV_nolen
# define SvPV_nolen(x) SvPV(x,PL_na)
#endif

#ifndef get_sv
#  define get_sv perl_get_sv
#endif

#ifndef ERRSV
#  define ERRSV get_sv("@",FALSE)
#endif

#ifndef pTHX_
#define pTHX_
#endif   

#include <string.h>
#ifdef __cplusplus
}
#endif

/* -----------------------------------------------------------------------------
 * error manipulation
 * ----------------------------------------------------------------------------- */

SWIGINTERN const char*
SWIG_Perl_ErrorType(int code) {
  switch(code) {
  case SWIG_MemoryError:
    return "MemoryError";
  case SWIG_IOError:
    return "IOError";
  case SWIG_RuntimeError:
    return "RuntimeError";
  case SWIG_IndexError:
    return "IndexError";
  case SWIG_TypeError:
    return "TypeError";
  case SWIG_DivisionByZero:
    return "ZeroDivisionError";
  case SWIG_OverflowError:
    return "OverflowError";
  case SWIG_SyntaxError:
    return "SyntaxError";
  case SWIG_ValueError:
    return "ValueError";
  case SWIG_SystemError:
    return "SystemError";
  case SWIG_AttributeError:
    return "AttributeError";
  case SWIG_NullReferenceError:
    return "NullReferenceError";
  default:
    return "RuntimeError";
  }
}


/* -----------------------------------------------------------------------------
 * perlrun.swg
 *
 * This file contains the runtime support for Perl modules
 * and includes code for managing global variables and pointer
 * type checking.
 * ----------------------------------------------------------------------------- */

#define SWIG_PERL_OBJECT_DECL
#define SWIG_PERL_OBJECT_CALL

/* Common SWIG API */

/* for raw pointers */
#define SWIG_ConvertPtr(obj, pp, type, flags)           SWIG_Perl_ConvertPtr(SWIG_PERL_OBJECT_CALL obj, pp, type, flags)
#define SWIG_ConvertPtrAndOwn(obj, pp, type, flags,own) SWIG_Perl_ConvertPtrAndOwn(SWIG_PERL_OBJECT_CALL obj, pp, type, flags, own)
#define SWIG_NewPointerObj(p, type, flags)              SWIG_Perl_NewPointerObj(SWIG_PERL_OBJECT_CALL p, type, flags)
#define SWIG_AcquirePtr(ptr, src)                       SWIG_Perl_AcquirePtr(ptr, src)
#define swig_owntype                                    int

/* for raw packed data */
#define SWIG_ConvertPacked(obj, p, s, type)             SWIG_Perl_ConvertPacked(SWIG_PERL_OBJECT_CALL obj, p, s, type)
#define SWIG_NewPackedObj(p, s, type)	                SWIG_Perl_NewPackedObj(SWIG_PERL_OBJECT_CALL p, s, type)

/* for class or struct pointers */
#define SWIG_ConvertInstance(obj, pptr, type, flags)    SWIG_ConvertPtr(obj, pptr, type, flags)
#define SWIG_NewInstanceObj(ptr, type, flags)           SWIG_NewPointerObj(ptr, type, flags)

/* for C or C++ function pointers */
#define SWIG_ConvertFunctionPtr(obj, pptr, type)        SWIG_ConvertPtr(obj, pptr, type, 0)
#define SWIG_NewFunctionPtrObj(ptr, type)               SWIG_NewPointerObj(ptr, type, 0)

/* for C++ member pointers, ie, member methods */
#define SWIG_ConvertMember(obj, ptr, sz, ty)            SWIG_ConvertPacked(obj, ptr, sz, ty)
#define SWIG_NewMemberObj(ptr, sz, type)                SWIG_NewPackedObj(ptr, sz, type)


/* Runtime API */

#define SWIG_GetModule(clientdata)                      SWIG_Perl_GetModule(clientdata)
#define SWIG_SetModule(clientdata, pointer)             SWIG_Perl_SetModule(pointer)


/* Error manipulation */

#define SWIG_ErrorType(code)                            SWIG_Perl_ErrorType(code)               
#define SWIG_Error(code, msg)            		sv_setpvf(get_sv("@", GV_ADD), "%s %s", SWIG_ErrorType(code), msg)
#define SWIG_fail                        		goto fail						    

/* Perl-specific SWIG API */

#define SWIG_MakePtr(sv, ptr, type, flags)              SWIG_Perl_MakePtr(SWIG_PERL_OBJECT_CALL sv, ptr, type, flags)
#define SWIG_MakePackedObj(sv, p, s, type)	        SWIG_Perl_MakePackedObj(SWIG_PERL_OBJECT_CALL sv, p, s, type)
#define SWIG_SetError(str)                              SWIG_Error(SWIG_RuntimeError, str)


#define SWIG_PERL_DECL_ARGS_1(arg1)                     (SWIG_PERL_OBJECT_DECL arg1)
#define SWIG_PERL_CALL_ARGS_1(arg1)                     (SWIG_PERL_OBJECT_CALL arg1)
#define SWIG_PERL_DECL_ARGS_2(arg1, arg2)               (SWIG_PERL_OBJECT_DECL arg1, arg2)
#define SWIG_PERL_CALL_ARGS_2(arg1, arg2)               (SWIG_PERL_OBJECT_CALL arg1, arg2)

/* -----------------------------------------------------------------------------
 * pointers/data manipulation
 * ----------------------------------------------------------------------------- */

/* For backward compatibility only */
#define SWIG_POINTER_EXCEPTION  0

#ifdef __cplusplus
extern "C" {
#endif

#define SWIG_OWNER   SWIG_POINTER_OWN
#define SWIG_SHADOW  SWIG_OWNER << 1

#define SWIG_MAYBE_PERL_OBJECT SWIG_PERL_OBJECT_DECL

/* SWIG Perl macros */

/* Macro to declare an XS function */
#ifndef XSPROTO
#   define XSPROTO(name) void name(pTHX_ CV* cv)
#endif

/* Macro to call an XS function */
#ifndef MULTIPLICITY
#  define SWIG_CALLXS(_name) _name(cv)
#else
#  define SWIG_CALLXS(_name) _name(PERL_GET_THX, cv)
#endif

#define MAGIC_PPERL
#define SWIGCLASS_STATIC static SWIGUNUSED

#ifndef MULTIPLICITY
#define SWIG_MAGIC(a,b) (SV *a, MAGIC *b)

#ifdef __cplusplus
extern "C" {
#endif
typedef int (*SwigMagicFunc)(SV *, MAGIC *);
#ifdef __cplusplus
}
#endif

#else /* MULTIPLICITY */

#define SWIG_MAGIC(a,b) (struct interpreter *interp, SV *a, MAGIC *b)

#ifdef __cplusplus
extern "C" {
#endif
typedef int (*SwigMagicFunc)(struct interpreter *, SV *, MAGIC *);
#ifdef __cplusplus
}
#endif

#endif /* MULTIPLICITY */

static void SWIGUNUSED SWIG_croak_null(void)
{
  SV *err = get_sv("@", GV_ADD);
  if (sv_isobject(err))
    croak(0);
  else
    croak("%s", SvPV_nolen(err));
}


/* 
   Define how strict is the cast between strings and integers/doubles
   when overloading between these types occurs.
   
   The default is making it as strict as possible by using SWIG_AddCast
   when needed.
   
   You can use -DSWIG_PERL_NO_STRICT_STR2NUM at compilation time to
   disable the SWIG_AddCast, making the casting between string and
   numbers less strict.

   In the end, we try to solve the overloading between strings and
   numerical types in the more natural way, but if you can avoid it,
   well, avoid it using %rename, for example.
*/
#ifndef SWIG_PERL_NO_STRICT_STR2NUM
# ifndef SWIG_PERL_STRICT_STR2NUM
#  define SWIG_PERL_STRICT_STR2NUM
# endif
#endif
#ifdef SWIG_PERL_STRICT_STR2NUM
/* string takes precedence */
#define SWIG_Str2NumCast(x) SWIG_AddCast(x)  
#else
/* number takes precedence */
#define SWIG_Str2NumCast(x) x
#endif



#include <stdlib.h>

SWIGRUNTIME const char *
SWIG_Perl_TypeProxyName(const swig_type_info *type) {
  if (type) {
    if (type->clientdata != NULL) {
      return (const char *) type->clientdata;
    }
    else {
      return type->name;
    }
  }
  return NULL;
}

/* SWIG_TypeCheck without binary search by hash value */
SWIGRUNTIME swig_cast_info *
SWIG_TypeProxyCheck(const char *c, swig_type_info *ty) {
  if (ty) {
    swig_cast_info *head, *cast;
    head = ty->cast;
    while (head) {
      for (cast = head; (cast - head) <= head->value; cast++) {
        if (strcmp(SWIG_Perl_TypeProxyName(cast->type), c) == 0) {
          return cast;
        }
      }
      head = head->next;
    }
  }
  return 0;
}

/* Acquire a pointer value */

SWIGRUNTIME int
SWIG_Perl_AcquirePtr(SWIG_MAYBE_PERL_OBJECT SV *SWIGUNUSEDPARM(sv), int SWIGUNUSEDPARM(own)) {
  /* TODO */
  return 0;
}

/* Function for getting a pointer value */

SWIGRUNTIME int
SWIG_Perl_ConvertPtrAndOwn(SWIG_MAYBE_PERL_OBJECT SV *sv, void **ptr, swig_type_info *_t, int flags, int *own) {
  swig_cast_info *tc;
  void *voidptr = (void *)0;
  SV *tsv = 0;
  int check_owned_pointer_release = (flags & SWIG_POINTER_RELEASE) == SWIG_POINTER_RELEASE;

  if (own)
    *own = 0;

  /* If magical, apply more magic */
  if (SvGMAGICAL(sv))
    mg_get(sv);

  /* Check to see if this is an object */
  if (sv_isobject(sv)) {
    IV tmp = 0;
    tsv = (SV*) SvRV(sv);
    if ((SvTYPE(tsv) == SVt_PVHV)) {
      MAGIC *mg;
      if (SvMAGICAL(tsv)) {
        mg = mg_find(tsv,'P');
        if (mg) {
          sv = mg->mg_obj;
          if (sv_isobject(sv)) {
	    tsv = (SV*)SvRV(sv);
            tmp = SvIV(tsv);
          }
        }
      } else {
        return SWIG_ERROR;
      }
    } else {
      tmp = SvIV(tsv);
    }
    voidptr = INT2PTR(void *,tmp);
  } else if (! SvOK(sv)) {            /* Check for undef */
    *(ptr) = (void *) 0;
    return (flags & SWIG_POINTER_NO_NULL) ? SWIG_NullReferenceError : SWIG_OK;
  } else if (SvTYPE(sv) == SVt_RV) {  /* Check for NULL pointer */
    if (!SvROK(sv)) {
      /* In Perl 5.12 and later, SVt_RV == SVt_IV, so sv could be a valid integer value.  */
      if (SvIOK(sv)) {
        return SWIG_ERROR;
      } else {
        /* NULL pointer (reference to undef). */
        *(ptr) = (void *) 0;
        return SWIG_OK;
      }
    } else {
      return SWIG_ERROR;
    }
  } else {                            /* Don't know what it is */
    return SWIG_ERROR;
  }
  if (_t) {
    /* Now see if the types match */
    char *_c = HvNAME(SvSTASH(SvRV(sv)));
    tc = SWIG_TypeProxyCheck(_c,_t);
#ifdef SWIG_DIRECTORS
    if (!tc && !sv_derived_from(sv,SWIG_Perl_TypeProxyName(_t))) {
#else
    if (!tc) {
#endif
      return SWIG_ERROR;
    }
    {
      int newmemory = 0;
      *ptr = SWIG_TypeCast(tc,voidptr,&newmemory);
      if (newmemory == SWIG_CAST_NEW_MEMORY) {
        assert(own); /* badly formed typemap which will lead to a memory leak - it must set and use own to delete *ptr */
        if (own)
          *own = *own | SWIG_CAST_NEW_MEMORY;
      }
    }
  } else {
    *ptr = voidptr;
  }

  /* 
   *  DISOWN implementation: we need a perl guru to check this one.
   */
  if (tsv && ((flags & SWIG_POINTER_DISOWN) || check_owned_pointer_release)) {
    /* 
     *  almost copy paste code from below SWIG_POINTER_OWN setting
     */
    SV *obj = sv;
    HV *stash = SvSTASH(SvRV(obj));
    GV *gv = *(GV**)hv_fetch(stash, "OWNER", 5, TRUE);
    int owned = 0;
    if (isGV(gv)) {
      HV *hv = GvHVn(gv);
      /*
       * To set ownership (see below), a newSViv(1) entry is added. 
       * Hence, to remove ownership, we delete the entry.
       */
      if (hv_exists_ent(hv, obj, 0)) {
        owned = 1;
        if (flags & SWIG_POINTER_DISOWN) {
          hv_delete_ent(hv, obj, 0, 0);
        }
      }
    }
    if (check_owned_pointer_release && !owned) {
      return SWIG_ERROR_RELEASE_NOT_OWNED;
    }
  }

  if (tsv && (flags & SWIG_POINTER_CLEAR)) {
    SvIV_set(tsv, 0);
  }

  return SWIG_OK;
}

SWIGRUNTIME int
SWIG_Perl_ConvertPtr(SWIG_MAYBE_PERL_OBJECT SV *sv, void **ptr, swig_type_info *_t, int flags) {
  return SWIG_Perl_ConvertPtrAndOwn(sv, ptr, _t, flags, 0);
}

SWIGRUNTIME void
SWIG_Perl_MakePtr(SWIG_MAYBE_PERL_OBJECT SV *sv, void *ptr, swig_type_info *t, int flags) {
  if (ptr && (flags & (SWIG_SHADOW | SWIG_POINTER_OWN))) {
    SV *self;
    SV *obj=newSV(0);
    HV *hash=newHV();
    HV *stash;
    sv_setref_pv(obj, SWIG_Perl_TypeProxyName(t), ptr);
    stash=SvSTASH(SvRV(obj));
    if (flags & SWIG_POINTER_OWN) {
      HV *hv;
      GV *gv = *(GV**)hv_fetch(stash, "OWNER", 5, TRUE);
      if (!isGV(gv))
        gv_init(gv, stash, "OWNER", 5, FALSE);
      hv=GvHVn(gv);
      hv_store_ent(hv, obj, newSViv(1), 0);
    }
    sv_magic((SV *)hash, (SV *)obj, 'P', Nullch, 0);
    SvREFCNT_dec(obj);
    self=newRV_noinc((SV *)hash);
    sv_setsv(sv, self);
    SvREFCNT_dec((SV *)self);
    sv_bless(sv, stash);
  }
  else {
    sv_setref_pv(sv, SWIG_Perl_TypeProxyName(t), ptr);
  }
}

SWIGRUNTIMEINLINE SV *
SWIG_Perl_NewPointerObj(SWIG_MAYBE_PERL_OBJECT void *ptr, swig_type_info *t, int flags) {
  SV *result = sv_newmortal();
  SWIG_MakePtr(result, ptr, t, flags);
  return result;
}

SWIGRUNTIME void
SWIG_Perl_MakePackedObj(SWIG_MAYBE_PERL_OBJECT SV *sv, void *ptr, int sz, swig_type_info *type) {
  char result[1024];
  char *r = result;
  if ((2*sz + 1 + strlen(SWIG_Perl_TypeProxyName(type))) > 1000) return;
  *(r++) = '_';
  r = SWIG_PackData(r,ptr,sz);
  strcpy(r,SWIG_Perl_TypeProxyName(type));
  sv_setpv(sv, result);
}

SWIGRUNTIME SV *
SWIG_Perl_NewPackedObj(SWIG_MAYBE_PERL_OBJECT void *ptr, int sz, swig_type_info *type) {
  SV *result = sv_newmortal();
  SWIG_Perl_MakePackedObj(result, ptr, sz, type);
  return result;
}

/* Convert a packed pointer value */
SWIGRUNTIME int
SWIG_Perl_ConvertPacked(SWIG_MAYBE_PERL_OBJECT SV *obj, void *ptr, int sz, swig_type_info *ty) {
  swig_cast_info *tc;
  const char  *c = 0;

  if ((!obj) || (!SvOK(obj))) return SWIG_ERROR;
  c = SvPV_nolen(obj);
  /* Pointer values must start with leading underscore */
  if (*c != '_') return SWIG_ERROR;
  c++;
  c = SWIG_UnpackData(c,ptr,sz);
  if (ty) {
    tc = SWIG_TypeCheck(c,ty);
    if (!tc) return SWIG_ERROR;
  }
  return SWIG_OK;
}


/* Macros for low-level exception handling */
#define SWIG_croak(x)    { SWIG_Error(SWIG_RuntimeError, x); SWIG_fail; }


typedef XSPROTO(SwigPerlWrapper);
typedef SwigPerlWrapper *SwigPerlWrapperPtr;

/* Structure for command table */
typedef struct {
  const char         *name;
  SwigPerlWrapperPtr  wrapper;
} swig_command_info;

/* Information for constant table */

#define SWIG_INT     1
#define SWIG_FLOAT   2
#define SWIG_STRING  3
#define SWIG_POINTER 4
#define SWIG_BINARY  5

/* Constant information structure */
typedef struct swig_constant_info {
    int              type;
    const char      *name;
    long             lvalue;
    double           dvalue;
    void            *pvalue;
    swig_type_info **ptype;
} swig_constant_info;


/* Structure for variable table */
typedef struct {
  const char   *name;
  SwigMagicFunc   set;
  SwigMagicFunc   get;
  swig_type_info  **type;
} swig_variable_info;

/* Magic variable code */
#ifdef __cplusplus
#  define swig_create_magic(s,a,b,c) _swig_create_magic(s,const_cast<char*>(a),b,c)
#else
#  define swig_create_magic(s,a,b,c) _swig_create_magic(s,(char*)(a),b,c)
#endif
#ifndef MULTIPLICITY
SWIGRUNTIME void _swig_create_magic(SV *sv, char *name, int (*set)(SV *, MAGIC *), int (*get)(SV *,MAGIC *))
#else
SWIGRUNTIME void _swig_create_magic(SV *sv, char *name, int (*set)(struct interpreter*, SV *, MAGIC *), int (*get)(struct interpreter*, SV *,MAGIC *))
#endif
{
  MAGIC *mg;
  sv_magic(sv,sv,'U',name,(I32)strlen(name));
  mg = mg_find(sv,'U');
  mg->mg_virtual = (MGVTBL *) malloc(sizeof(MGVTBL));
  mg->mg_virtual->svt_get = (SwigMagicFunc) get;
  mg->mg_virtual->svt_set = (SwigMagicFunc) set;
  mg->mg_virtual->svt_len = 0;
  mg->mg_virtual->svt_clear = 0;
  mg->mg_virtual->svt_free = 0;
}


SWIGRUNTIME swig_module_info *
SWIG_Perl_GetModule(void *SWIGUNUSEDPARM(clientdata)) {
  static void *type_pointer = (void *)0;
  SV *pointer;

  /* first check if pointer already created */
  if (!type_pointer) {
    pointer = get_sv("swig_runtime_data::type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME, FALSE | GV_ADDMULTI);
    if (pointer && SvOK(pointer)) {
      type_pointer = INT2PTR(swig_type_info **, SvIV(pointer));
    }
  }

  return (swig_module_info *) type_pointer;
}

SWIGRUNTIME void
SWIG_Perl_SetModule(swig_module_info *module) {
  SV *pointer;

  /* create a new pointer */
  pointer = get_sv("swig_runtime_data::type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME, TRUE | GV_ADDMULTI);
  sv_setiv(pointer, PTR2IV(module));
}

#ifdef __cplusplus
}
#endif

/* Workaround perl5 global namespace pollution. Note that undefining library
 * functions like fopen will not solve the problem on all platforms as fopen
 * might be a macro on Windows but not necessarily on other operating systems. */
#ifdef do_open
  #undef do_open
#endif
#ifdef do_close
  #undef do_close
#endif
#ifdef do_exec
  #undef do_exec
#endif
#ifdef scalar
  #undef scalar
#endif
#ifdef list
  #undef list
#endif
#ifdef apply
  #undef apply
#endif
#ifdef convert
  #undef convert
#endif
#ifdef Error
  #undef Error
#endif
#ifdef form
  #undef form
#endif
#ifdef vform
  #undef vform
#endif
#ifdef LABEL
  #undef LABEL
#endif
#ifdef METHOD
  #undef METHOD
#endif
#ifdef Move
  #undef Move
#endif
#ifdef yylex
  #undef yylex
#endif
#ifdef yyparse
  #undef yyparse
#endif
#ifdef yyerror
  #undef yyerror
#endif
#ifdef invert
  #undef invert
#endif
#ifdef ref
  #undef ref
#endif
#ifdef read
  #undef read
#endif
#ifdef write
  #undef write
#endif
#ifdef eof
  #undef eof
#endif
#ifdef close
  #undef close
#endif
#ifdef rewind
  #undef rewind
#endif
#ifdef free
  #undef free
#endif
#ifdef malloc
  #undef malloc
#endif
#ifdef calloc
  #undef calloc
#endif
#ifdef Stat
  #undef Stat
#endif
#ifdef check
  #undef check
#endif
#ifdef seekdir
  #undef seekdir
#endif
#ifdef open
  #undef open
#endif
#ifdef readdir
  #undef readdir
#endif
#ifdef bind
  #undef bind
#endif
#ifdef access
  #undef access
#endif
#ifdef stat
  #undef stat
#endif
#ifdef seed
  #undef seed
#endif

#ifdef bool
  /* Leave if macro is from C99 stdbool.h */
  #ifndef __bool_true_false_are_defined
    #undef bool
  #endif
#endif




#define SWIG_exception_fail(code, msg) do { SWIG_Error(code, msg); SWIG_fail; } while(0) 

#define SWIG_contract_assert(expr, msg) do { if (!(expr)) { SWIG_Error(SWIG_RuntimeError, msg); SWIG_fail; } } while (0) 



/* -------- TYPES TABLE (BEGIN) -------- */

#define SWIGTYPE_p_argarray swig_types[0]
#define SWIGTYPE_p_char swig_types[1]
#define SWIGTYPE_p_charbuf swig_types[2]
#define SWIGTYPE_p_double swig_types[3]
#define SWIGTYPE_p_iargarray swig_types[4]
#define SWIGTYPE_p_int swig_types[5]
#define SWIGTYPE_p_intarray swig_types[6]
#define SWIGTYPE_p_ipmi_args_t swig_types[7]
#define SWIGTYPE_p_ipmi_channel_access_t swig_types[8]
#define SWIGTYPE_p_ipmi_channel_info_t swig_types[9]
#define SWIGTYPE_p_ipmi_cmdlang_event_t swig_types[10]
#define SWIGTYPE_p_ipmi_cmdlang_t swig_types[11]
#define SWIGTYPE_p_ipmi_control_id_t swig_types[12]
#define SWIGTYPE_p_ipmi_control_t swig_types[13]
#define SWIGTYPE_p_ipmi_domain_id_t swig_types[14]
#define SWIGTYPE_p_ipmi_domain_t swig_types[15]
#define SWIGTYPE_p_ipmi_entity_id_t swig_types[16]
#define SWIGTYPE_p_ipmi_entity_t swig_types[17]
#define SWIGTYPE_p_ipmi_event_t swig_types[18]
#define SWIGTYPE_p_ipmi_fru_node_t swig_types[19]
#define SWIGTYPE_p_ipmi_fru_t swig_types[20]
#define SWIGTYPE_p_ipmi_lan_config_t swig_types[21]
#define SWIGTYPE_p_ipmi_lanparm_t swig_types[22]
#define SWIGTYPE_p_ipmi_mc_t swig_types[23]
#define SWIGTYPE_p_ipmi_mcid_t swig_types[24]
#define SWIGTYPE_p_ipmi_pef_config_t swig_types[25]
#define SWIGTYPE_p_ipmi_pef_t swig_types[26]
#define SWIGTYPE_p_ipmi_pet_t swig_types[27]
#define SWIGTYPE_p_ipmi_sensor_id_t swig_types[28]
#define SWIGTYPE_p_ipmi_sensor_t swig_types[29]
#define SWIGTYPE_p_ipmi_sol_config_t swig_types[30]
#define SWIGTYPE_p_ipmi_sol_conn_t swig_types[31]
#define SWIGTYPE_p_ipmi_solparm_t swig_types[32]
#define SWIGTYPE_p_ipmi_timeout_t swig_types[33]
#define SWIGTYPE_p_ipmi_user_t swig_types[34]
#define SWIGTYPE_p_p_char swig_types[35]
#define SWIGTYPE_p_p_ipmi_args_t swig_types[36]
#define SWIGTYPE_p_p_ipmi_fru_node_t swig_types[37]
#define SWIGTYPE_p_strconstarray swig_types[38]
#define SWIGTYPE_p_swig_cb swig_types[39]
#define SWIGTYPE_p_unsigned_int swig_types[40]
static swig_type_info *swig_types[42];
static swig_module_info swig_module = {swig_types, 41, 0, 0, 0, 0};
#define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name)
#define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name)

/* -------- TYPES TABLE (END) -------- */

#define SWIG_init    boot_OpenIPMI

#define SWIG_name   "OpenIPMIc::boot_OpenIPMI"
#define SWIG_prefix "OpenIPMIc::"

#define SWIG_as_voidptr(a) (void *)((const void *)(a)) 
#define SWIG_as_voidptrptr(a) ((void)SWIG_as_voidptr(*a),(void**)(a)) 


#ifdef __cplusplus
extern "C"
#endif
#ifndef MULTIPLICITY
SWIGEXPORT void SWIG_init (CV* cv);
#else
SWIGEXPORT void SWIG_init (pTHXo_ CV* cv);
#endif



#include <config.h>
#include <sys/types.h>
#include <sys/socket.h>

#ifdef HAVE_GETADDRINFO
#include <netdb.h>
#endif

#include <OpenIPMI/ipmiif.h>
#include <OpenIPMI/ipmi_auth.h>
#include <OpenIPMI/ipmi_mc.h>
#include <OpenIPMI/ipmi_fru.h>
#include <OpenIPMI/ipmi_msgbits.h>
#include <OpenIPMI/ipmi_conn.h>
#include <OpenIPMI/ipmi_posix.h>
#include <OpenIPMI/ipmi_debug.h>
#include <OpenIPMI/ipmi_user.h>
#include <OpenIPMI/ipmi_lanparm.h>
#include <OpenIPMI/ipmi_pef.h>
#include <OpenIPMI/ipmi_pet.h>
#include <OpenIPMI/ipmi_sol.h>
#include <OpenIPMI/ipmi_solparm.h>
#include <OpenIPMI/ipmi_err.h>
#include <OpenIPMI/ipmi_cmdlang.h>

#include <signal.h>

/* For ipmi_debug_malloc_cleanup() */
#include <OpenIPMI/internal/ipmi_malloc.h>

#include "OpenIPMI.h"

typedef struct intarray
{
    int *val;
    int len;
} intarray;

typedef struct charbuf
{
    char *val;
    int len;
} charbuf;

os_handler_t *swig_os_hnd;

static int
next_parm(char *s, int *start, int *next)
{
    while (s[*start] && isspace(s[*start]))
	(*start)++;
    if (!s[*start])
	return EINVAL;

    *next = *start;
    while (s[*next] && !isspace(s[*next]))
	(*next)++;
    return 0;
}

static int
next_colon_parm(char *s, int *start, int *next)
{
    while (s[*start] && (s[*start] == ':'))
	(*start)++;
    if (!s[*start])
	return EINVAL;

    *next = *start;
    while (s[*next] && (s[*next] != ':'))
	(*next)++;
    return 0;
}

static int
num_parm(char *s, int len, int *rval)
{
    char numstr[10];
    char *end;
    int  val;

    if (len > 9)
	return EINVAL;
    memcpy(numstr, s, len);
    numstr[len] = '\0';
    val = strtoul(numstr, &end, 0);
    if (*end != '\0')
	return EINVAL;
    *rval = val;
    return 0;
}

static int
parse_ipmi_addr(char *addr, int lun, ipmi_addr_t *i, unsigned int *addr_len)
{
    int start, next;
    int rv;
    int num;
    int len;

    start = 0;
    rv = next_parm(addr, &start, &next);
    if (rv)
	return rv;
    len = next - start;

    if (strncmp(addr+start, "smi", len) == 0) {
	ipmi_system_interface_addr_t *si = (void *) i;

	si->addr_type = IPMI_SYSTEM_INTERFACE_ADDR_TYPE;
	si->lun = lun;
	start = next;
	rv = next_parm(addr, &start, &next);
	if (rv)
	    return rv;
	len = next - start;
	rv = num_parm(addr+start, len, &num);
	if (rv)
	    return rv;
	si->channel = num;
	*addr_len = sizeof(*si);
    } else if (strncmp(addr+start, "ipmb", len) == 0) {
	ipmi_ipmb_addr_t *ipmb = (void *) i;

	ipmb->addr_type = IPMI_IPMB_ADDR_TYPE;
	ipmb->lun = lun;

	start = next;
	rv = next_parm(addr, &start, &next);
	if (rv)
	    return rv;
	len = next - start;
	rv = num_parm(addr+start, len, &num);
	if (rv)
	    return rv;
	ipmb->channel = num;

	start = next;
	rv = next_parm(addr, &start, &next);
	if (rv)
	    return rv;
	len = next - start;
	rv = num_parm(addr+start, len, &num);
	if (rv)
	    return rv;
	ipmb->slave_addr = num;

	*addr_len = sizeof(*ipmb);
    } else {
	return EINVAL;
    }

    return 0;
}

static void
make_ipmi_addr(char *out, int max_len, ipmi_addr_t *addr, int addr_len,
	       int *lun)
{
    if (addr->addr_type == IPMI_SYSTEM_INTERFACE_ADDR_TYPE) {
	ipmi_system_interface_addr_t *si = (void *) addr;
	snprintf(out, max_len, "smi %d", si->channel);
	*lun = si->lun;
    } else if (addr->addr_type == IPMI_IPMB_ADDR_TYPE) {
	ipmi_ipmb_addr_t *ipmb = (void *) addr;
	snprintf(out, max_len, "ipmb %d %d", ipmb->channel, ipmb->slave_addr);
	*lun = ipmb->lun;
    } else {
	strncpy(out, "unknown", max_len);
	*lun = 0;
    }
}

static int
parse_ipmi_data(intarray data, unsigned char *odata,
		unsigned int max_len,
		unsigned int *rlen)
{
    int i;
    if (data.len > max_len)
	return E2BIG;
    for (i=0; i<data.len; i++)
	odata[i] = data.val[i];
    *rlen = data.len;
    return 0;
}

static unsigned char *
parse_raw_str_data(char *str, unsigned int *length)
{
    char *s = str;
    int  inspace = 1;
    int  count = 0;
    int  i;
    unsigned char *rv;
    char *endstr;

    while (*s) {
	if (inspace && !isspace(*s)) {
	    inspace = 0;
	    count++;
	} else if (!inspace && isspace(*s)) {
	    inspace = 1;
	}
	s++;
    }

    if (count == 0) {
	*length = 0;
	return malloc(1);
    }

    rv = malloc(count);
    if (!rv)
	return NULL;

    s = str;
    i = 0;
    while ((*s) && (i < count)) {
	rv[i] = strtoul(s, &endstr, 0);
	if (*endstr && (!isspace(*endstr)))
	    goto out_err;
	i++;
	s = endstr;
    }

    *length = count;
    return rv;

 out_err:
    free(rv);
    return NULL;
}

static int
parse_ip_addr(char *str, struct in_addr *addr)
{
#ifdef HAVE_GETADDRINFO
    struct addrinfo    hints, *res0, *s;
    struct sockaddr_in *paddr;
    int                rv;
 
    memset(&hints, 0, sizeof(hints));
    hints.ai_family = PF_UNSPEC;
    hints.ai_socktype = SOCK_DGRAM;
    rv = getaddrinfo(str, "100", &hints, &res0);
    if (rv) {
	return EINVAL;
    }
    /* Only get the first ipv4 */
    s = res0;
    while (s) {
	if (s->ai_family == PF_INET)
	    break;
	s = s->ai_next;
    }
    if (!s) {
	freeaddrinfo(res0);
	return EINVAL;
    }
    paddr = (struct sockaddr_in *) s->ai_addr;
    *addr = paddr->sin_addr;
    freeaddrinfo(res0);
    return 0;
#else
/* System does not support getaddrinfo, just for IPv4*/
    struct hostent *ent;
    ent = gethostbyname(str);
    if (!ent)
	return EINVAL;
    memcpy(&addr->s_addr, ent->h_addr_list[0], 4);
    return 0;
#endif
}

static int
parse_mac_addr(char *str, unsigned char *addr)
{
    char *s;
    int  i;
    char *endstr;

    s = str;
    while (isspace(*s))
	s++;
    if (! isxdigit(*s))
	return EINVAL;
    for (i=0; i<5; i++) {
	addr[i] = strtoul(s, &endstr, 16);
	if (*endstr != ':')
	    return EINVAL;
	s = endstr+1;
    }
    addr[i] = strtoul(s, &endstr, 16);
    if (*endstr != '\0')
	return EINVAL;
    return 0;
}


/* For output returning an array of constant strings */
typedef struct strconstarray
{
    const char **val;
    int len;
} strconstarray;

/* For input only */
typedef struct argarray
{
    char **val;
    int len;
} argarray;

/* For input only */
typedef struct iargarray
{
    ipmi_args_t **val;
    int         len;
} iargarray;


#include <limits.h>
#if !defined(SWIG_NO_LLONG_MAX)
# if !defined(LLONG_MAX) && defined(__GNUC__) && defined (__LONG_LONG_MAX__)
#   define LLONG_MAX __LONG_LONG_MAX__
#   define LLONG_MIN (-LLONG_MAX - 1LL)
#   define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL)
# endif
#endif


#include <errno.h>


#include <stdlib.h>
#ifdef _MSC_VER
# ifndef strtoull
#  define strtoull _strtoui64
# endif
# ifndef strtoll
#  define strtoll _strtoi64
# endif
#endif


SWIGINTERN int
SWIG_AsVal_double SWIG_PERL_DECL_ARGS_2(SV *obj, double *val)
{
  if (SvNIOK(obj)) {
    if (val) *val = SvNV(obj);
    return SWIG_OK;
  } else if (SvIOK(obj)) {
    if (val) *val = (double) SvIV(obj);
    return SWIG_AddCast(SWIG_OK);
  } else {
    const char *nptr = SvPV_nolen(obj);
    if (nptr) {
      char *endptr;
      double v;
      errno = 0;
      v = strtod(nptr, &endptr);
      if (errno == ERANGE) {
	errno = 0;
	return SWIG_OverflowError;
      } else {
	if (*endptr == '\0') {
	  if (val) *val = v;
	  return SWIG_Str2NumCast(SWIG_OK);
	}
      }
    }
  }
  return SWIG_TypeError;
}


#include <float.h>


#include <math.h>


SWIGINTERNINLINE int
SWIG_CanCastAsInteger(double *d, double min, double max) {
  double x = *d;
  if ((min <= x && x <= max)) {
   double fx, cx, rd;
   errno = 0;
   fx = floor(x);
   cx = ceil(x);
   rd =  ((x - fx) < 0.5) ? fx : cx; /* simple rint */
   if ((errno == EDOM) || (errno == ERANGE)) {
     errno = 0;
   } else {
     double summ, reps, diff;
     if (rd < x) {
       diff = x - rd;
     } else if (rd > x) {
       diff = rd - x;
     } else {
       return 1;
     }
     summ = rd + x;
     reps = diff/summ;
     if (reps < 8*DBL_EPSILON) {
       *d = rd;
       return 1;
     }
   }
  }
  return 0;
}


SWIGINTERN int
SWIG_AsVal_long SWIG_PERL_DECL_ARGS_2(SV *obj, long* val)
{
  if (SvUOK(obj)) {
    UV v = SvUV(obj);
    if (UVSIZE < sizeof(*val) || v <= LONG_MAX) {
      if (val) *val = v;
      return SWIG_OK;
    }
    return SWIG_OverflowError;
  } else if (SvIOK(obj)) {
    IV v = SvIV(obj);
    if (IVSIZE <= sizeof(*val) || (v >= LONG_MIN && v <= LONG_MAX)) {
      if(val) *val = v;
      return SWIG_OK;
    }
    return SWIG_OverflowError;
  } else {
    int dispatch = 0;
    const char *nptr = SvPV_nolen(obj);
    if (nptr) {
      char *endptr;
      long v;
      errno = 0;
      v = strtol(nptr, &endptr,0);
      if (errno == ERANGE) {
	errno = 0;
	return SWIG_OverflowError;
      } else {
	if (*endptr == '\0') {
	  if (val) *val = v;
	  return SWIG_Str2NumCast(SWIG_OK);
	}
      }
    }
    if (!dispatch) {
      double d;
      int res = SWIG_AddCast(SWIG_AsVal_double SWIG_PERL_CALL_ARGS_2(obj,&d));
      if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, LONG_MIN, LONG_MAX)) {
	if (val) *val = (long)(d);
	return res;
      }
    }
  }
  return SWIG_TypeError;
}


SWIGINTERN int
SWIG_AsVal_int SWIG_PERL_DECL_ARGS_2(SV * obj, int *val)
{
  long v;
  int res = SWIG_AsVal_long SWIG_PERL_CALL_ARGS_2(obj, &v);
  if (SWIG_IsOK(res)) {
    if ((v < INT_MIN || v > INT_MAX)) {
      return SWIG_OverflowError;
    } else {
      if (val) *val = (int)(v);
    }
  }  
  return res;
}


SWIGINTERNINLINE SV *
SWIG_From_long  SWIG_PERL_DECL_ARGS_1(long value)
{
  SV *sv;
  if (IVSIZE >= sizeof(value) || (value >= IV_MIN && value <= IV_MAX))
    sv = newSViv(value);
  else
    sv = newSVpvf("%ld", value);
  return sv_2mortal(sv);
}


SWIGINTERNINLINE SV *
SWIG_From_int  SWIG_PERL_DECL_ARGS_1(int value)
{    
  return SWIG_From_long  SWIG_PERL_CALL_ARGS_1(value);
}


#if PERL_HAS_POSIX_THREADS
#define USE_POSIX_THREADS
#endif

static swig_ref
swig_make_ref_destruct_i(void *item, swig_type_info *class)
{
    swig_ref rv;

    rv.val = newSV(0);
    SWIG_MakePtr(rv.val, item, class, SWIG_SHADOW | SWIG_OWNER);
    return rv;
}

/* Make a reference whose destructor will be called when everything
   is done with it. */
#define swig_make_ref_destruct(item, name) \
	swig_make_ref_destruct_i(item, SWIGTYPE_p_ ## name)

static swig_ref
swig_make_ref_i(void *item, swig_type_info *class)
{
    swig_ref rv;

    rv.val = newSV(0);
    SWIG_MakePtr(rv.val, item, class, 0);
    return rv;
}

#define swig_make_ref(item, name) \
	swig_make_ref_i(item, SWIGTYPE_p_ ## name)

#define swig_free_ref_check(r, c) \
	do {								\
	    if (SvREFCNT(SvRV(r.val)) != 1)				\
		warn("***You cannot keep pointers of class OpenIPMI::%s", #c);\
	    swig_free_ref(r);						\
	} while(0)

/* Get the underlying callback object reference. */
static swig_cb_val *
get_swig_cb_i(swig_cb *cb)
{
    swig_cb_val *rv = SvRV(cb);
    return rv;
}
#define get_swig_cb(cb, func) get_swig_cb_i(cb)

/* Get the underlying callback object reference and increment its refcount. */
static swig_cb_val *
ref_swig_cb_i(swig_cb *cb)
{
    swig_cb_val *rv = SvRV(cb);

    SvREFCNT_inc(rv);
    return rv;
}
#define ref_swig_cb(cb, func) ref_swig_cb_i(cb)
#define ref_swig_2cb(cb, func, func2) ref_swig_cb_i(cb)
#define ref_swig_gencb(cb) ref_swig_cb_i(cb)

/* Get the underlying callback object reference and decrement its refcount. */
static swig_cb_val *
deref_swig_cb(swig_cb *cb)
{
    swig_cb_val *rv = SvRV(cb);

    SvREFCNT_dec(rv);
    return rv;
}

/* Decrement the underlying callback object refcount. */
static swig_cb_val *
deref_swig_cb_val(swig_cb_val *cb)
{
    SvREFCNT_dec(cb);
    return cb;
}

static void
swig_free_ref(swig_ref ref)
{
    SvREFCNT_dec(ref.val);
}

/* Not required in Perl, no special C entry or exit handling required
   for functions that handle callbacks or might block. */
#define IPMI_SWIG_C_CB_ENTRY 
#define IPMI_SWIG_C_CB_EXIT 
#define IPMI_SWIG_C_BLOCK_ENTRY
#define IPMI_SWIG_C_BLOCK_EXIT



swig_cb_val *swig_log_handler;

void
openipmi_swig_vlog(os_handler_t *os_handler, const char *format,
		   enum ipmi_log_type_e log_type, va_list ap)
{
    char *pfx = "";
    static char log[1024];
    static int curr = 0;
    swig_cb_val *handler = swig_log_handler;

    if (! handler)
	return;

    switch(log_type)
    {
    case IPMI_LOG_INFO:
	pfx = "INFO";
	break;

    case IPMI_LOG_WARNING:
	pfx = "WARN";
	break;

    case IPMI_LOG_SEVERE:
	pfx = "SEVR";
	break;

    case IPMI_LOG_FATAL:
	pfx = "FATL";
	break;

    case IPMI_LOG_ERR_INFO:
	pfx = "EINF";
	break;

    case IPMI_LOG_DEBUG:
	pfx = "DEBG";
	break;

    case IPMI_LOG_DEBUG_START:
    case IPMI_LOG_DEBUG_CONT:
	if (curr < sizeof(log))
	    curr += vsnprintf(log+curr, sizeof(log)-curr, format, ap);
	return;

    case IPMI_LOG_DEBUG_END:
	if (curr < sizeof(log))
	    vsnprintf(log+curr, sizeof(log)-curr, format, ap);
	pfx = "DEBG";
	curr = 0;
	goto plog;
    }

    vsnprintf(log, sizeof(log), format, ap);

 plog:
    swig_call_cb(handler, "log", "%s%s", pfx, log);
}

static void
handle_domain_cb(ipmi_domain_t *domain, void *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    domain_ref;

    domain_ref = swig_make_ref(domain, ipmi_domain_t);
    swig_call_cb(cb, "domain_cb", "%p", &domain_ref);
    swig_free_ref_check(domain_ref, ipmi_domain_t);
}

static void
domain_connect_change_handler(ipmi_domain_t *domain,
			      int           err,
			      unsigned int  conn_num,
			      unsigned int  port_num,
			      int           still_connected,
			      void          *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    domain_ref;

    domain_ref = swig_make_ref(domain, ipmi_domain_t);
    swig_call_cb(cb, "conn_change_cb", "%p%d%d%d%d",
		 &domain_ref, err, conn_num, port_num, still_connected);
    swig_free_ref_check(domain_ref, ipmi_domain_t);
}

static void
domain_connect_change_handler_cl(ipmi_domain_con_cb handler,
				 void               *handler_data,
				 void               *cb_data)
{
    if (handler != domain_connect_change_handler)
	return;
    swig_cb_val *handler_val = handler_data;
    deref_swig_cb_val(handler_val);
}

static void
domain_iterate_connections_handler(ipmi_domain_t *domain, int conn,
				   void *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    domain_ref;

    domain_ref = swig_make_ref(domain, ipmi_domain_t);
    swig_call_cb(cb, "domain_iter_connection_cb", "%p%d", &domain_ref, conn);
    swig_free_ref_check(domain_ref, ipmi_domain_t);
}

static void
domain_event_handler(ipmi_domain_t *domain, ipmi_event_t *event, void *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    domain_ref;
    swig_ref    event_ref;

    domain_ref = swig_make_ref(domain, ipmi_domain_t);
    event_ref = swig_make_ref_destruct(ipmi_event_dup(event), ipmi_event_t);
    swig_call_cb(cb, "event_cb", "%p%p", &domain_ref, &event_ref);
    swig_free_ref_check(domain_ref, ipmi_domain_t);
    swig_free_ref(event_ref);
}

static void
domain_event_handler_cl(ipmi_event_handler_cb handler,
			void                  *handler_data,
			void                  *cb_data)
{
    if (handler != domain_event_handler)
	return;
    swig_cb_val *handler_val = handler_data;
    deref_swig_cb_val(handler_val);
}

static void
domain_mc_updated_handler(enum ipmi_update_e op, ipmi_domain_t *domain,
			  ipmi_mc_t *mc, void *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    domain_ref;
    swig_ref    mc_ref;

    domain_ref = swig_make_ref(domain, ipmi_domain_t);
    mc_ref = swig_make_ref(mc, ipmi_mc_t);
    swig_call_cb(cb, "mc_update_cb", "%s%p%p",
		 ipmi_update_e_string(op), &domain_ref, &mc_ref);
    swig_free_ref_check(domain_ref, ipmi_domain_t);
    swig_free_ref_check(mc_ref, ipmi_mc_t);
}

static void
domain_mc_updated_handler_cl(ipmi_domain_mc_upd_cb handler,
			     void                  *handler_data,
			     void                  *cb_data)
{
    if (handler != domain_mc_updated_handler)
	return;
    swig_cb_val *handler_val = handler_data;
    deref_swig_cb_val(handler_val);
}

static void
domain_entity_update_handler(enum ipmi_update_e op, ipmi_domain_t *domain,
			      ipmi_entity_t *entity, void *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    domain_ref;
    swig_ref    entity_ref;

    domain_ref = swig_make_ref(domain, ipmi_domain_t);
    entity_ref = swig_make_ref(entity, ipmi_entity_t);
    swig_call_cb(cb, "entity_update_cb", "%s%p%p",
		 ipmi_update_e_string(op), &domain_ref, &entity_ref);
    swig_free_ref_check(domain_ref, ipmi_domain_t);
    swig_free_ref_check(entity_ref, ipmi_entity_t);
}

static void
domain_entity_update_handler_cl(ipmi_domain_entity_cb handler,
				void                  *handler_data,
				void                  *cb_data)
{
    if (handler != domain_entity_update_handler)
	return;
    swig_cb_val *handler_val = handler_data;
    deref_swig_cb_val(handler_val);
}

static void
domain_fully_up(ipmi_domain_t *domain, void *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    domain_ref;

    domain_ref = swig_make_ref(domain, ipmi_domain_t);
    swig_call_cb(cb, "domain_up_cb", "%p", &domain_ref);
    swig_free_ref_check(domain_ref, ipmi_domain_t);
    /* One-time call, get rid of the CB. */
    deref_swig_cb_val(cb);
}

static void
parse_args_iter_help_hnd(const char *name, const char *help, void *cb_data)
{
    swig_cb_val *cb = cb_data;

    swig_call_cb(cb, "parse_args_iter_help_cb", "%s%s", name, help);
}

static void
domain_close_done(void *cb_data)
{
    swig_cb_val *cb = cb_data;

    swig_call_cb(cb, "domain_close_done_cb", " ");
    /* One-time call, get rid of the CB. */
    deref_swig_cb_val(cb);
}

static void
domain_iterate_entities_handler(ipmi_entity_t *entity, void *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    domain_ref;
    swig_ref    entity_ref;

    domain_ref = swig_make_ref(ipmi_entity_get_domain(entity), ipmi_domain_t);
    entity_ref = swig_make_ref(entity, ipmi_entity_t);
    swig_call_cb(cb, "domain_iter_entity_cb", "%p%p",
		 &domain_ref, &entity_ref);
    swig_free_ref_check(domain_ref, ipmi_domain_t);
    swig_free_ref_check(entity_ref, ipmi_entity_t);
}

static void
ipmb_mc_scan_handler(ipmi_domain_t *domain, int err, void *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    domain_ref;

    domain_ref = swig_make_ref(domain, ipmi_domain_t);
    swig_call_cb(cb, "domain_ipmb_mc_scan_cb", "%p%d", &domain_ref, err);
    swig_free_ref_check(domain_ref, ipmi_domain_t);
    /* One-time call, get rid of the CB. */
    deref_swig_cb_val(cb);
}

static void
domain_reread_sels_handler(ipmi_domain_t *domain, int err, void *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    domain_ref;

    domain_ref = swig_make_ref(domain, ipmi_domain_t);
    swig_call_cb(cb, "domain_reread_sels_cb", "%p%d", &domain_ref, err);
    swig_free_ref_check(domain_ref, ipmi_domain_t);
}

static int
domain_msg_cb(ipmi_domain_t *domain, ipmi_msgi_t *rspi)
{
    swig_cb_val   *cb = rspi->data1;
    swig_ref      domain_ref;
    ipmi_msg_t    *msg = &rspi->msg;
    ipmi_addr_t   *addr = &rspi->addr;
    int           addr_len = rspi->addr_len;
    char          addr_str[50];
    int           lun;

    make_ipmi_addr(addr_str, sizeof(addr_str), addr, addr_len, &lun);
    domain_ref = swig_make_ref(domain, ipmi_domain_t);
    swig_call_cb(cb, "domain_addr_cmd_cb", "%p%s%d%d%d%*s", &domain_ref,
		 addr_str, lun, msg->netfn, msg->cmd,
		 msg->data_len, msg->data);
    swig_free_ref_check(domain_ref, ipmi_domain_t);
    /* One-time call, get rid of the CB. */
    deref_swig_cb_val(cb);
    
    return IPMI_MSG_ITEM_NOT_USED;
}

static void
domain_iterate_mcs_handler(ipmi_domain_t *domain, ipmi_mc_t *mc, void *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    domain_ref;
    swig_ref    mc_ref;

    domain_ref = swig_make_ref(domain, ipmi_domain_t);
    mc_ref = swig_make_ref(mc, ipmi_mc_t);
    swig_call_cb(cb, "domain_iter_mc_cb", "%p%p", &domain_ref, &mc_ref);
    swig_free_ref_check(domain_ref, ipmi_domain_t);
    swig_free_ref_check(mc_ref, ipmi_mc_t);
}

static void
fru_written_done(ipmi_domain_t *domain, ipmi_fru_t *fru,
		 int err, void *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    domain_ref;
    swig_ref    fru_ref;

    domain_ref = swig_make_ref(domain, ipmi_domain_t);
    fru_ref = swig_make_ref_destruct(fru, ipmi_fru_t);
    /* The FRU is already referenced because of the callback, no need
       to mess with refcounts. */
    swig_call_cb(cb, "fru_written", "%p%p%d", &domain_ref, &fru_ref, err);
    swig_free_ref_check(domain_ref, ipmi_domain_t);
    swig_free_ref(fru_ref);
    /* One-time call, get rid of the CB. */
    deref_swig_cb_val(cb);
}

static void
fru_fetched(ipmi_domain_t *domain, ipmi_fru_t *fru, int err, void *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    domain_ref;
    swig_ref    fru_ref;

    domain_ref = swig_make_ref(domain, ipmi_domain_t);
    fru_ref = swig_make_ref_destruct(fru, ipmi_fru_t);
    /* The FRU is already referenced because of the callback, no need
       to mess with refcounts. */
    swig_call_cb(cb, "fru_fetched", "%p%p%d", &domain_ref, &fru_ref, err);
    swig_free_ref_check(domain_ref, ipmi_domain_t);
    swig_free_ref(fru_ref);
    /* One-time call, get rid of the CB. */
    deref_swig_cb_val(cb);
}

static void
handle_entity_cb(ipmi_entity_t *entity, void *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    entity_ref;

    entity_ref = swig_make_ref(entity, ipmi_entity_t);
    swig_call_cb(cb, "entity_cb", "%p", &entity_ref);
    swig_free_ref_check(entity_ref, ipmi_entity_t);
}

static void
entity_iterate_entities_handler(ipmi_entity_t *ent1,
				ipmi_entity_t *ent2,
				void          *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    ent1_ref;
    swig_ref    ent2_ref;

    ent1_ref = swig_make_ref(ent1, ipmi_entity_t);
    ent2_ref = swig_make_ref(ent2, ipmi_entity_t);
    swig_call_cb(cb, "entity_iter_entities_cb", "%p%p", &ent1_ref, &ent2_ref);
    swig_free_ref_check(ent2_ref, ipmi_entity_t);
    swig_free_ref_check(ent1_ref, ipmi_entity_t);
}

static void
entity_iterate_sensors_handler(ipmi_entity_t *entity,
			       ipmi_sensor_t *sensor,
			       void          *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    entity_ref;
    swig_ref    sensor_ref;

    entity_ref = swig_make_ref(entity, ipmi_entity_t);
    sensor_ref = swig_make_ref(sensor, ipmi_sensor_t);
    swig_call_cb(cb, "entity_iter_sensors_cb", "%p%p",
		 &entity_ref, &sensor_ref);
    swig_free_ref_check(sensor_ref, ipmi_sensor_t);
    swig_free_ref_check(entity_ref, ipmi_entity_t);
}

static void
entity_iterate_controls_handler(ipmi_entity_t  *entity,
				ipmi_control_t *control,
				void           *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    entity_ref;
    swig_ref    control_ref;

    entity_ref = swig_make_ref(entity, ipmi_entity_t);
    control_ref = swig_make_ref(control, ipmi_control_t);
    swig_call_cb(cb, "entity_iter_controls_cb", "%p%p",
		 &entity_ref, &control_ref);
    swig_free_ref_check(control_ref, ipmi_control_t);
    swig_free_ref_check(entity_ref, ipmi_entity_t);
}

static int
entity_presence_handler(ipmi_entity_t *entity,
			int           present,
			void          *cb_data,
			ipmi_event_t  *event)
{
    swig_cb_val *cb = cb_data;
    swig_ref    entity_ref;
    swig_ref    event_ref;
    int         rv = IPMI_EVENT_NOT_HANDLED;

    entity_ref = swig_make_ref(entity, ipmi_entity_t);
    event_ref = swig_make_ref_destruct(ipmi_event_dup(event), ipmi_event_t);
    swig_call_cb_rv('I', &rv, cb, "entity_presence_cb", "%p%d%p",
		    &entity_ref, present, &event_ref);
    swig_free_ref_check(entity_ref, ipmi_entity_t);
    swig_free_ref(event_ref);
    return rv;
}

static void
entity_presence_handler_cl(ipmi_entity_presence_change_cb handler,
			   void                           *handler_data,
			   void                           *cb_data)
{
    if (handler != entity_presence_handler)
	return;
    swig_cb_val *handler_val = handler_data;
    deref_swig_cb_val(handler_val);
}

static void
entity_sensor_update_handler(enum ipmi_update_e op,
			     ipmi_entity_t      *entity,
			     ipmi_sensor_t      *sensor,
			     void               *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    entity_ref;
    swig_ref    sensor_ref;

    entity_ref = swig_make_ref(entity, ipmi_entity_t);
    sensor_ref = swig_make_ref(sensor, ipmi_sensor_t);
    swig_call_cb(cb, "entity_sensor_update_cb", "%s%p%p",
		 ipmi_update_e_string(op), &entity_ref, &sensor_ref);
    swig_free_ref_check(entity_ref, ipmi_entity_t);
    swig_free_ref_check(sensor_ref, ipmi_sensor_t);
}

static void
entity_sensor_update_handler_cl(ipmi_entity_sensor_cb handler,
				 void                  *handler_data,
				 void                  *cb_data)
{
    if (handler != entity_sensor_update_handler)
	return;
    swig_cb_val *handler_val = handler_data;
    deref_swig_cb_val(handler_val);
}

static void
entity_control_update_handler(enum ipmi_update_e op,
			      ipmi_entity_t      *entity,
			      ipmi_control_t     *control,
			      void               *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    entity_ref;
    swig_ref    control_ref;

    entity_ref = swig_make_ref(entity, ipmi_entity_t);
    control_ref = swig_make_ref(control, ipmi_control_t);
    swig_call_cb(cb, "entity_control_update_cb", "%s%p%p",
		 ipmi_update_e_string(op), &entity_ref, &control_ref);
    swig_free_ref_check(entity_ref, ipmi_entity_t);
    swig_free_ref_check(control_ref, ipmi_control_t);
}

static void
entity_control_update_handler_cl(ipmi_entity_control_cb handler,
				 void                  *handler_data,
				 void                  *cb_data)
{
    if (handler != entity_control_update_handler)
	return;
    swig_cb_val *handler_val = handler_data;
    deref_swig_cb_val(handler_val);
}

static void
entity_fru_update_handler(enum ipmi_update_e op,
			  ipmi_entity_t      *entity,
			  void               *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    entity_ref;
    swig_ref    fru_ref;
    ipmi_fru_t  *fru;

    entity_ref = swig_make_ref(entity, ipmi_entity_t);
    fru = ipmi_entity_get_fru(entity);
    if (fru)
	ipmi_fru_ref(fru);
    fru_ref = swig_make_ref_destruct(fru, ipmi_fru_t);
    swig_call_cb(cb, "entity_fru_update_cb", "%s%p%p",
		 ipmi_update_e_string(op), &entity_ref, &fru_ref);
    swig_free_ref_check(entity_ref, ipmi_entity_t);
    swig_free_ref(fru_ref);
}

static void
entity_fru_update_werr_handler(enum ipmi_update_werr_e op,
			       int                     err,
			       ipmi_entity_t           *entity,
			       void                    *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    entity_ref;
    swig_ref    fru_ref;
    ipmi_fru_t  *fru;

    entity_ref = swig_make_ref(entity, ipmi_entity_t);
    fru = ipmi_entity_get_fru(entity);
    if (fru)
	ipmi_fru_ref(fru);
    fru_ref = swig_make_ref_destruct(fru, ipmi_fru_t);
    swig_call_cb(cb, "entity_fru_update_werr_cb", "%s%d%p%p",
		 ipmi_update_werr_e_string(op), err, &entity_ref, &fru_ref);
    swig_free_ref_check(entity_ref, ipmi_entity_t);
    swig_free_ref(fru_ref);
}

static void
entity_fru_update_handler_cl(ipmi_entity_fru_cb handler,
			     void               *handler_data,
			     void               *cb_data)
{
    if (handler != entity_fru_update_handler)
	return;
    swig_cb_val *handler_val = handler_data;
    deref_swig_cb_val(handler_val);
}

static void
entity_fru_update_werr_handler_cl(ipmi_entity_fru_werr_cb handler,
				  void                    *handler_data,
				  void                    *cb_data)
{
    if (handler != entity_fru_update_werr_handler)
	return;
    swig_cb_val *handler_val = handler_data;
    deref_swig_cb_val(handler_val);
}

static int
entity_hot_swap_handler(ipmi_entity_t             *entity,
			enum ipmi_hot_swap_states last_state,
			enum ipmi_hot_swap_states curr_state,
			void                      *cb_data,
			ipmi_event_t              *event)
{
    swig_cb_val *cb = cb_data;
    swig_ref    entity_ref;
    swig_ref    event_ref;
    int         rv = IPMI_EVENT_NOT_HANDLED;

    entity_ref = swig_make_ref(entity, ipmi_entity_t);
    event_ref = swig_make_ref_destruct(ipmi_event_dup(event), ipmi_event_t);
    swig_call_cb_rv('I', &rv,
		    cb, "entity_hot_swap_update_cb", "%p%s%s%p", &entity_ref,
		    ipmi_hot_swap_state_name(last_state),
		    ipmi_hot_swap_state_name(curr_state),
		    &event_ref);
    swig_free_ref_check(entity_ref, ipmi_entity_t);
    swig_free_ref(event_ref);
    return rv;
}

static void
entity_hot_swap_handler_cl(ipmi_entity_hot_swap_cb handler,
			   void                    *handler_data,
			   void                    *cb_data)
{
    if (handler != entity_hot_swap_handler)
	return;
    swig_cb_val *handler_val = handler_data;
    deref_swig_cb_val(handler_val);
}

static void
entity_get_hot_swap_handler(ipmi_entity_t             *entity,
			    int                       err,
			    enum ipmi_hot_swap_states state,
			    void                      *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    entity_ref;

    entity_ref = swig_make_ref(entity, ipmi_entity_t);
    swig_call_cb(cb, "entity_hot_swap_cb", "%p%d%s", &entity_ref,
		 err, ipmi_hot_swap_state_name(state));
    swig_free_ref_check(entity_ref, ipmi_entity_t);
    /* One-time call, get rid of the CB. */
    deref_swig_cb_val(cb);
}

static void
entity_get_hot_swap_time_handler(ipmi_entity_t  *entity,
				 int            err,
				 ipmi_timeout_t time,
				 void           *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    entity_ref;

    entity_ref = swig_make_ref(entity, ipmi_entity_t);
    swig_call_cb(cb, "entity_hot_swap_get_time_cb", "%p%d%f", &entity_ref,
		 err, ((double) time) / 1000000000.0);
    swig_free_ref_check(entity_ref, ipmi_entity_t);
    /* One-time call, get rid of the CB. */
    deref_swig_cb_val(cb);
}

static void
entity_set_hot_swap_time_handler(ipmi_entity_t  *entity,
				 int            err,
				 void           *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    entity_ref;

    entity_ref = swig_make_ref(entity, ipmi_entity_t);
    swig_call_cb(cb, "entity_hot_swap_set_time_cb", "%p%d", &entity_ref, err);
    swig_free_ref_check(entity_ref, ipmi_entity_t);
    /* One-time call, get rid of the CB. */
    deref_swig_cb_val(cb);
}

static void
entity_activate_handler(ipmi_entity_t  *entity,
			int            err,
			void           *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    entity_ref;

    entity_ref = swig_make_ref(entity, ipmi_entity_t);
    swig_call_cb(cb, "entity_activate_cb", "%p%d", &entity_ref, err);
    swig_free_ref_check(entity_ref, ipmi_entity_t);
    /* One-time call, get rid of the CB. */
    deref_swig_cb_val(cb);
}

static void
handle_mc_cb(ipmi_mc_t *mc, void *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    mc_ref;

    mc_ref = swig_make_ref(mc, ipmi_mc_t);
    swig_call_cb(cb, "mc_cb", "%p", &mc_ref);
    swig_free_ref_check(mc_ref, ipmi_mc_t);
}

static void
mc_active_handler(ipmi_mc_t  *mc,
		  int        active,
		  void       *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    mc_ref;

    mc_ref = swig_make_ref(mc, ipmi_mc_t);
    swig_call_cb(cb, "mc_active_cb", "%p%d", &mc_ref, active);
    swig_free_ref_check(mc_ref, ipmi_mc_t);
}

static void
mc_active_handler_cl(ipmi_mc_active_cb handler,
		     void              *handler_data,
		     void              *cb_data)
{
    if (handler != mc_active_handler)
	return;
    swig_cb_val *handler_val = handler_data;
    deref_swig_cb_val(handler_val);
}

static void
mc_fully_up_handler(ipmi_mc_t *mc, void *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    mc_ref;

    mc_ref = swig_make_ref(mc, ipmi_mc_t);
    swig_call_cb(cb, "mc_fully_up_cb", "%p", &mc_ref);
    swig_free_ref_check(mc_ref, ipmi_mc_t);
}

static void
mc_fully_up_handler_cl(ipmi_mc_ptr_cb handler,
		       void           *handler_data,
		       void           *cb_data)
{
    if (handler != mc_fully_up_handler)
	return;
    swig_cb_val *handler_val = handler_data;
    deref_swig_cb_val(handler_val);
}

static void
mc_msg_cb(ipmi_mc_t  *mc,
	  ipmi_msg_t *msg,
	  void       *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    mc_ref;

    mc_ref = swig_make_ref(mc, ipmi_mc_t);
    swig_call_cb(cb, "mc_cmd_cb", "%p%d%d%*s", &mc_ref,
		 msg->netfn, msg->cmd, msg->data_len, msg->data);
    swig_free_ref_check(mc_ref, ipmi_mc_t);
    /* One-time call, get rid of the CB. */
    deref_swig_cb_val(cb);
}

static void
mc_reset_handler(ipmi_mc_t *mc, int err, void *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    mc_ref;

    mc_ref = swig_make_ref(mc, ipmi_mc_t);
    swig_call_cb(cb, "mc_reset_cb", "%p%d", &mc_ref, err);
    swig_free_ref_check(mc_ref, ipmi_mc_t);
    /* One-time call, get rid of the CB. */
    deref_swig_cb_val(cb);
}

static void
mc_events_enable_handler(ipmi_mc_t *mc, int err, void *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    mc_ref;

    mc_ref = swig_make_ref(mc, ipmi_mc_t);
    swig_call_cb(cb, "mc_events_enable_cb", "%p%d", &mc_ref, err);
    swig_free_ref_check(mc_ref, ipmi_mc_t);
    /* One-time call, get rid of the CB. */
    deref_swig_cb_val(cb);
}

static void
mc_get_event_log_enable_handler(ipmi_mc_t *mc, int err, int val, void *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    mc_ref;

    mc_ref = swig_make_ref(mc, ipmi_mc_t);
    swig_call_cb(cb, "mc_get_event_log_enable_cb", "%p%d%d",
		 &mc_ref, err, val);
    swig_free_ref_check(mc_ref, ipmi_mc_t);
    /* One-time call, get rid of the CB. */
    deref_swig_cb_val(cb);
}

static void
mc_set_event_log_enable_handler(ipmi_mc_t *mc, int err, void *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    mc_ref;

    mc_ref = swig_make_ref(mc, ipmi_mc_t);
    swig_call_cb(cb, "mc_set_event_log_enable_cb", "%p%d", &mc_ref, err);
    swig_free_ref_check(mc_ref, ipmi_mc_t);
    /* One-time call, get rid of the CB. */
    deref_swig_cb_val(cb);
}

static void
mc_reread_sensors_handler(ipmi_mc_t *mc, int err, void *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    mc_ref;

    mc_ref = swig_make_ref(mc, ipmi_mc_t);
    swig_call_cb(cb, "mc_reread_sensors_cb", "%p%d", &mc_ref, err);
    swig_free_ref_check(mc_ref, ipmi_mc_t);
    /* One-time call, get rid of the CB. */
    deref_swig_cb_val(cb);
}

static void
mc_reread_sel_handler(ipmi_mc_t *mc, int err, void *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    mc_ref;

    mc_ref = swig_make_ref(mc, ipmi_mc_t);
    swig_call_cb(cb, "mc_reread_sel_cb", "%p%d", &mc_ref, err);
    swig_free_ref_check(mc_ref, ipmi_mc_t);
    /* One-time call, get rid of the CB. */
    deref_swig_cb_val(cb);
}

static void
mc_sel_get_time_cb(ipmi_mc_t     *mc,
		   int           err,
		   unsigned long time,
		   void          *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    mc_ref;

    mc_ref = swig_make_ref(mc, ipmi_mc_t);
    swig_call_cb(cb, "mc_get_sel_time_cb", "%p%d%ld", &mc_ref, err, time);
    swig_free_ref_check(mc_ref, ipmi_mc_t);
    /* One-time call, get rid of the CB. */
    deref_swig_cb_val(cb);
}

static void
mc_channel_get_info(ipmi_mc_t           *mc,
		    int                 err,
		    ipmi_channel_info_t *info,
		    void                *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    mc_ref;
    swig_ref    info_ref;

    info = ipmi_channel_info_copy(info);
    mc_ref = swig_make_ref(mc, ipmi_mc_t);
    info_ref = swig_make_ref_destruct(info, ipmi_channel_info_t);
    swig_call_cb(cb, "mc_channel_got_info_cb", "%p%d%p", &mc_ref, err,
		 &info_ref);
    swig_free_ref_check(mc_ref, ipmi_mc_t);
    swig_free_ref(info_ref);
    /* One-time call, get rid of the CB. */
    deref_swig_cb_val(cb);
}

static void
mc_channel_get_access(ipmi_mc_t             *mc,
		      int                   err,
		      ipmi_channel_access_t *info,
		      void                  *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    mc_ref;
    swig_ref    info_ref;

    info = ipmi_channel_access_copy(info);
    mc_ref = swig_make_ref(mc, ipmi_mc_t);
    info_ref = swig_make_ref_destruct(info, ipmi_channel_access_t);
    swig_call_cb(cb, "mc_channel_got_access_cb", "%p%d%p", &mc_ref, err,
		 &info_ref);
    swig_free_ref_check(mc_ref, ipmi_mc_t);
    swig_free_ref(info_ref);
    /* One-time call, get rid of the CB. */
    deref_swig_cb_val(cb);
}

static void
mc_channel_set_access(ipmi_mc_t *mc,
		      int       err,
		      void      *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    mc_ref;

    mc_ref = swig_make_ref(mc, ipmi_mc_t);
    swig_call_cb(cb, "mc_channel_set_access_cb", "%p%d", &mc_ref, err);
    swig_free_ref_check(mc_ref, ipmi_mc_t);
    /* One-time call, get rid of the CB. */
    deref_swig_cb_val(cb);
}

static void
mc_channel_got_users(ipmi_mc_t        *mc,
		     int              err,
		     ipmi_user_list_t *info,
		     void             *cb_data)
{
    swig_cb_val  *cb = cb_data;
    swig_ref     mc_ref;
    swig_ref     *info_ref;
    int		 free_info_ref = 0;
    int          count;
    swig_ref     dummy;
    int          i;
    unsigned int max, enabled, fixed;

    if (info) {
	count = ipmi_user_list_get_user_count(info);
	info_ref = malloc(count * sizeof(swig_ref));
	if (!info_ref) {
	    count = 0;
	    info_ref = &dummy;
	} else {
	    free_info_ref = 1;
	}
    } else {
	count = 0;
	info_ref = &dummy;
    }

    mc_ref = swig_make_ref(mc, ipmi_mc_t);
    for (i=0; i<count; i++) {
	ipmi_user_t *user = ipmi_user_list_get_user(info, i);
	info_ref[i] = swig_make_ref_destruct(user, ipmi_user_t);
    }
    ipmi_user_list_get_max_user(info, &max);
    ipmi_user_list_get_enabled_users(info, &enabled);
    ipmi_user_list_get_fixed_users(info, &fixed);
    swig_call_cb(cb, "mc_channel_got_users_cb", "%p%d%d%d%d%*o", &mc_ref, err,
		 max, enabled, fixed, count, info_ref);
    swig_free_ref_check(mc_ref, ipmi_mc_t);
    for (i=0; i<count; i++)
	swig_free_ref(info_ref[i]);
    if (free_info_ref)
	free(info_ref);
    /* One-time call, get rid of the CB. */
    deref_swig_cb_val(cb);
}

static void
mc_channel_set_user(ipmi_mc_t *mc,
		    int       err,
		    void      *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    mc_ref;

    mc_ref = swig_make_ref(mc, ipmi_mc_t);
    swig_call_cb(cb, "mc_channel_set_user_cb", "%p%d", &mc_ref, err);
    swig_free_ref_check(mc_ref, ipmi_mc_t);
    /* One-time call, get rid of the CB. */
    deref_swig_cb_val(cb);
}

static void
handle_sensor_cb(ipmi_sensor_t *sensor, void *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    sensor_ref;

    sensor_ref = swig_make_ref(sensor, ipmi_sensor_t);
    swig_call_cb(cb, "sensor_cb", "%p", &sensor_ref);
    swig_free_ref_check(sensor_ref, ipmi_sensor_t);
}

static char *
threshold_str(char *s, enum ipmi_thresh_e thresh)
{
    if (thresh == IPMI_UPPER_NON_CRITICAL) {
	*s = 'u'; s++; *s = 'n'; s++;
    } else if (thresh == IPMI_UPPER_CRITICAL) {
	*s = 'u'; s++; *s = 'c'; s++;
    } else if (thresh == IPMI_UPPER_NON_RECOVERABLE) {
	*s = 'u'; s++; *s = 'r'; s++;
    } else if (thresh == IPMI_LOWER_NON_CRITICAL) {
	*s = 'l'; s++; *s = 'n'; s++;
    } else if (thresh == IPMI_LOWER_CRITICAL) {
	*s = 'l'; s++; *s = 'c'; s++;
    } else if (thresh == IPMI_LOWER_NON_RECOVERABLE) {
	*s = 'l'; s++; *s = 'r'; s++;
    }
      
    return s;
}

static char *
threshold_from_str(char *s, int len, enum ipmi_thresh_e *thresh)
{
    if (len != 2)
	return NULL;

    if (strncasecmp(s, "un", 2) == 0)
	*thresh = IPMI_UPPER_NON_CRITICAL;
    else if (strncasecmp(s, "uc", 2) == 0)
	*thresh = IPMI_UPPER_CRITICAL;
    else if (strncasecmp(s, "ur", 2) == 0)
	*thresh = IPMI_UPPER_NON_RECOVERABLE;
    else if (strncasecmp(s, "ln", 2) == 0)
	*thresh = IPMI_LOWER_NON_CRITICAL;
    else if (strncasecmp(s, "lc", 2) == 0)
	*thresh = IPMI_LOWER_CRITICAL;
    else if (strncasecmp(s, "lr", 2) == 0)
	*thresh = IPMI_LOWER_NON_RECOVERABLE;
    else
	return NULL;
    return s+2;
}

static char *
threshold_event_str(char                        *s, 
		    enum ipmi_thresh_e          thresh,
		    enum ipmi_event_value_dir_e value_dir,
		    enum ipmi_event_dir_e       dir)
{
    s = threshold_str(s, thresh);
    if (value_dir == IPMI_GOING_HIGH) {
	*s = 'h'; s++;
    } else {
	*s = 'l'; s++;
    }
    if (dir == IPMI_ASSERTION) {
	*s = 'a'; s++;
    } else {
	*s = 'd'; s++;
    }
    *s = '\0';
    return s;
}

static char *
threshold_event_from_str(char                        *s,
			 int                        len,
			 enum ipmi_thresh_e          *thresh,
			 enum ipmi_event_value_dir_e *value_dir,
			 enum ipmi_event_dir_e       *dir)
{
    if (len != 4)
	return NULL;

    s = threshold_from_str(s, 2, thresh);

    if (*s == 'l')
	*value_dir = IPMI_GOING_LOW;
    else if (*s == 'h')
	*value_dir = IPMI_GOING_HIGH;
    else
	return NULL;
    s++;
    if (*s == 'a')
	*dir = IPMI_ASSERTION;
    else if (*s == 'd')
	*dir = IPMI_DEASSERTION;
    else
	return NULL;
    s++;
    return s;
}

static char *
discrete_event_from_str(char                  *s,
			int                   len,
			int                   *offset,
			enum ipmi_event_dir_e *dir)
{
    if ((len < 2) || (len > 3))
	return NULL;

    *offset = strtoul(s, &s, 0);
    if (*offset >= 15)
	return NULL;
    if (*s == 'a')
	*dir = IPMI_ASSERTION;
    else if (*s == 'd')
	*dir = IPMI_DEASSERTION;
    else
	return NULL;
    s++;
    return s;
}

static char *
discrete_event_str(char                   *s, 
		   int                    offset,
		   enum ipmi_event_dir_e dir)
{
    if (offset >= 100)
	offset = 99;
    if (offset < 0)
	offset = 0;
    s += sprintf(s, "%d", offset);
    if (dir == IPMI_ASSERTION) {
	*s = 'a'; s++;
    } else {
	*s = 'd'; s++;
    }
    *s = '\0';
    return s;
}

static char *
threshold_event_state_to_str(ipmi_event_state_t *events)
{
    int                         len = 0;
    char                        *str;
    enum ipmi_thresh_e          thresh;
    enum ipmi_event_value_dir_e value_dir;
    enum ipmi_event_dir_e       dir;
    char                        *s;

    if (ipmi_event_state_get_events_enabled(events))
	len += strlen("events ");
    if (ipmi_event_state_get_scanning_enabled(events))
	len += strlen("scanning ");
    if (ipmi_event_state_get_busy(events))
	len += strlen("busy ");

    for (thresh = IPMI_LOWER_NON_CRITICAL;
	 thresh <= IPMI_UPPER_NON_RECOVERABLE; 
	 thresh++)
    {
	for (value_dir = IPMI_GOING_LOW;
	     value_dir <= IPMI_GOING_HIGH;
	     value_dir++)
	{
	    for (dir = IPMI_ASSERTION;
		 dir <= IPMI_DEASSERTION;
		 dir++)
	    {
		if (ipmi_is_threshold_event_set(events,thresh, value_dir, dir))
		    len += 5;
	    }
	}
    }

    str = malloc(len+1);
    str[0] = '\0';
    
    if (ipmi_event_state_get_events_enabled(events))
	strcat(str, "events ");
    if (ipmi_event_state_get_scanning_enabled(events))
	strcat(str, "scanning ");
    if (ipmi_event_state_get_busy(events))
	strcat(str, "busy ");
    s = str + strlen(str);

    for (thresh = IPMI_LOWER_NON_CRITICAL;
	 thresh <= IPMI_UPPER_NON_RECOVERABLE; 
	 thresh++)
    {
	for (value_dir = IPMI_GOING_LOW;
	     value_dir <= IPMI_GOING_HIGH;
	     value_dir++)
	{
	    for (dir = IPMI_ASSERTION;
		 dir <= IPMI_DEASSERTION;
		 dir++)
	    {
		if (!ipmi_is_threshold_event_set(events,thresh,value_dir,dir))
		    continue;

		s = threshold_event_str(s, thresh, value_dir, dir);
		*s = ' ';
		s++;
	    }
	}
    }
    *s = '\0';
    len = s - str;
    if (len > 0)
	str[len-1] = '\0'; /* Remove the final space */

    return str;
}

static int
str_to_threshold_event_state(char               *str,
			     ipmi_event_state_t **events)
{
    enum ipmi_thresh_e          thresh;
    enum ipmi_event_value_dir_e value_dir;
    enum ipmi_event_dir_e       dir;
    ipmi_event_state_t          *e;
    int                         start, next;
    int                         rv;

    e = malloc(ipmi_event_state_size());
    ipmi_event_state_init(e);

    start = 0;
    rv = next_parm(str, &start, &next);
    while (!rv) {
	char *s = str+start;
	int  len = next - start;
	if (strncasecmp(s, "events", len) == 0)
	    ipmi_event_state_set_events_enabled(e, 1);
	else if (strncasecmp(s, "scanning", len) == 0)
	    ipmi_event_state_set_scanning_enabled(e, 1);
	else if (strncasecmp(s, "busy", len) == 0)
	    ipmi_event_state_set_busy(e, 1);
	else {
	    s = threshold_event_from_str(s, len, &thresh, &value_dir, &dir);
	    if (!s)
		goto out_err;

	    ipmi_threshold_event_set(e, thresh, value_dir, dir);
	}

	start = next;
	rv = next_parm(str, &start, &next);
    }

    *events = e;
    return 0;

 out_err:
    free(e);
    return EINVAL;
}

static char *
discrete_event_state_to_str(ipmi_event_state_t *events)
{
    int                   len = 0;
    char                  *str;
    int                   offset;
    enum ipmi_event_dir_e dir;
    char                  *s;

    if (ipmi_event_state_get_events_enabled(events))
	len += strlen("events ");
    if (ipmi_event_state_get_scanning_enabled(events))
	len += strlen("scanning ");
    if (ipmi_event_state_get_busy(events))
	len += strlen("busy ");

    for (offset=0; offset<15; offset++) {
	for (dir = IPMI_ASSERTION;
	     dir <= IPMI_DEASSERTION;
	     dir++)
	{
	    if (ipmi_is_discrete_event_set(events, offset, dir))
		    len += 4;
	}
    }

    str = malloc(len+1);
    str[0] = '\0';
    
    if (ipmi_event_state_get_events_enabled(events))
	strcat(str, "events ");
    if (ipmi_event_state_get_scanning_enabled(events))
	strcat(str, "scanning ");
    if (ipmi_event_state_get_busy(events))
	strcat(str, "busy ");
    s = str + strlen(str);

    for (offset=0; offset<15; offset++) {
	for (dir = IPMI_ASSERTION;
	     dir <= IPMI_DEASSERTION;
	     dir++)
	{
	    if (! ipmi_is_discrete_event_set(events, offset, dir))
		continue;

	    s = discrete_event_str(s, offset, dir);
	    *s = ' ';
	    s++;
	}
    }
    *s = '\0';

    len = s - str;
    if (len > 0)
	str[len-1] = '\0'; /* Remove the final space */

    return str;
}

static int
str_to_discrete_event_state(char               *str,
			    ipmi_event_state_t **events)
{
    int                   offset;
    enum ipmi_event_dir_e dir;
    ipmi_event_state_t    *e;
    int                   start, next;
    int                   rv;

    e = malloc(ipmi_event_state_size());
    ipmi_event_state_init(e);

    start = 0;
    rv = next_parm(str, &start, &next);
    while (!rv) {
	char *s = str+start;
	int  len = next - start;
	if (strncasecmp(s, "events", len) == 0)
	    ipmi_event_state_set_events_enabled(e, 1);
	else if (strncasecmp(s, "scanning", len) == 0)
	    ipmi_event_state_set_scanning_enabled(e, 1);
	else if (strncasecmp(s, "busy", len) == 0)
	    ipmi_event_state_set_busy(e, 1);
	else {
	    s = discrete_event_from_str(s, len, &offset, &dir);
	    if (!s)
		goto out_err;
	    ipmi_discrete_event_set(e, offset, dir);
	}
	start = next;
	rv = next_parm(str, &start, &next);
    }

    *events = e;
    return 0;

 out_err:
    free(e);
    return EINVAL;
}

static char *
threshold_states_to_str(ipmi_states_t *states)
{
    int                len = 0;
    char               *str;
    enum ipmi_thresh_e thresh;
    char               *s;

    if (ipmi_is_event_messages_enabled(states))
	len += strlen("events ");
    if (ipmi_is_sensor_scanning_enabled(states))
	len += strlen("scanning ");
    if (ipmi_is_initial_update_in_progress(states))
	len += strlen("busy ");

    for (thresh = IPMI_LOWER_NON_CRITICAL;
	 thresh <= IPMI_UPPER_NON_RECOVERABLE; 
	 thresh++)
    {
	if (ipmi_is_threshold_out_of_range(states, thresh))
	    len += 3;
    }

    str = malloc(len+1);
    str[0] = '\0';
    
    if (ipmi_is_event_messages_enabled(states))
	strcat(str, "events ");
    if (ipmi_is_sensor_scanning_enabled(states))
	strcat(str, "scanning ");
    if (ipmi_is_initial_update_in_progress(states))
	strcat(str, "busy ");
    s = str + strlen(str);

    for (thresh = IPMI_LOWER_NON_CRITICAL;
	 thresh <= IPMI_UPPER_NON_RECOVERABLE; 
	 thresh++)
    {
	if (!ipmi_is_threshold_out_of_range(states, thresh))
	    continue;

	s = threshold_str(s, thresh);
	*s = ' ';
	s++;
    }
    *s = '\0';

    len = s - str;
    if (len > 0)
	str[len-1] = '\0'; /* Remove the final space */

    return str;
}

static char *
discrete_states_to_str(ipmi_states_t *states)
{
    int  len = 0;
    char *str;
    int  offset;
    char *s;

    if (ipmi_is_event_messages_enabled(states))
	len += strlen("events ");
    if (ipmi_is_sensor_scanning_enabled(states))
	len += strlen("scanning ");
    if (ipmi_is_initial_update_in_progress(states))
	len += strlen("busy ");

    for (offset=0; offset<15; offset++) {
	if (ipmi_is_state_set(states, offset))
	    len += 3;
    }

    str = malloc(len+1);
    str[0] = '\0';
    
    if (ipmi_is_event_messages_enabled(states))
	strcat(str, "events ");
    if (ipmi_is_sensor_scanning_enabled(states))
	strcat(str, "scanning ");
    if (ipmi_is_initial_update_in_progress(states))
	strcat(str, "busy ");
    s = str + strlen(str);

    for (offset=0; offset<15; offset++) {
	if (! ipmi_is_state_set(states, offset))
	    continue;

	s += sprintf(s, "%d", offset);
	*s = ' ';
	s++;
    }
    *s = '\0';

    len = s - str;
    if (len > 0)
	str[len-1] = '\0'; /* Remove the final space */

    return str;
}

static char *
thresholds_to_str(ipmi_thresholds_t *t)
{
    int                len = 0;
    char               *str;
    enum ipmi_thresh_e thresh;
    char               dummy[3];
    char               *s;
    double             val;

    for (thresh = IPMI_LOWER_NON_CRITICAL;
	 thresh <= IPMI_UPPER_NON_RECOVERABLE; 
	 thresh++)
    {
	if (ipmi_threshold_get(t, thresh, &val) == 0)
	    len += snprintf(dummy, 1, "aa %f:", val) + 1;
    }

    str = malloc(len+1);
    s = str;
    
    for (thresh = IPMI_LOWER_NON_CRITICAL;
	 thresh <= IPMI_UPPER_NON_RECOVERABLE; 
	 thresh++)
    {
	if (ipmi_threshold_get(t, thresh, &val) != 0)
	    continue;

	threshold_str(dummy, thresh);
	dummy[2] = '\0';

	s += sprintf(s, "%s %f:", dummy, val);
	*s = ' ';
	s++;
    }
    *s = '\0';

    len = s - str;
    if (len > 0)
	str[len-2] = '\0'; /* Remove the final ': ' */

    return str;
}

static int
str_to_thresholds(char              *str,
		  ipmi_sensor_t     *sensor,
		  ipmi_thresholds_t **thresholds)
{
    enum ipmi_thresh_e thresh;
    ipmi_thresholds_t  *t;
    int                start, next;
    int                rv;
    double             val;
    int                err = EINVAL;

    t = malloc(ipmi_thresholds_size());
    ipmi_thresholds_init(t);

    start = 0;
    rv = next_colon_parm(str, &start, &next);
    while (!rv) {
	char *s = str+start;
	char *endstr;
	int  len = next - start;
	if (len < 4)
	    goto out_err;

	if (strncasecmp(s, "un ", 3) == 0)
	    thresh = IPMI_UPPER_NON_CRITICAL;
	else if (strncasecmp(s, "uc ", 3) == 0)
	    thresh = IPMI_UPPER_CRITICAL;
	else if (strncasecmp(s, "ur ", 3) == 0)
	    thresh = IPMI_UPPER_NON_RECOVERABLE;
	else if (strncasecmp(s, "ln ", 3) == 0)
	    thresh = IPMI_LOWER_NON_CRITICAL;
	else if (strncasecmp(s, "lc ", 3) == 0)
	    thresh = IPMI_LOWER_CRITICAL;
	else if (strncasecmp(s, "lr ", 3) == 0)
	    thresh = IPMI_LOWER_NON_RECOVERABLE;
	else
	    goto out_err;

	val = strtod(s+3, &endstr);
	if ((*endstr != ':') && (*endstr != '\0'))
	    goto out_err;

	rv = ipmi_threshold_set(t, sensor, thresh, val);
	if (rv) {
	    err = rv;
	    goto out_err;
	}
	start = next;
	rv = next_colon_parm(str, &start, &next);
    }

    *thresholds = t;
    return 0;

 out_err:
    free(t);
    return err;
}

static int
sensor_threshold_event_handler(ipmi_sensor_t               *sensor,
			       enum ipmi_event_dir_e       dir,
			       enum ipmi_thresh_e          threshold,
			       enum ipmi_event_value_dir_e high_low,
			       enum ipmi_value_present_e   value_present,
			       unsigned int                raw_value,
			       double                      value,
			       void                        *cb_data,
			       ipmi_event_t                *event)
{
    swig_cb_val *cb = cb_data;
    swig_ref    sensor_ref;
    char        eventstr[5];
    int         raw_set = 0;
    int         value_set = 0;
    swig_ref    event_ref;
    int         rv = IPMI_EVENT_NOT_HANDLED;

    if (value_present == IPMI_RAW_VALUE_PRESENT)
	raw_set = 1;
    if (value_present == IPMI_BOTH_VALUES_PRESENT) {
	raw_set = 1;
	value_set = 1;
    }
    sensor_ref = swig_make_ref(sensor, ipmi_sensor_t);
    threshold_event_str(eventstr, threshold, high_low, dir);
    event_ref = swig_make_ref_destruct(ipmi_event_dup(event), ipmi_event_t);
    swig_call_cb_rv('I', &rv,
		    cb, "threshold_event_cb", "%p%s%d%d%d%f%p", &sensor_ref,
		    eventstr, raw_set, raw_value, value_set, value,
		    &event_ref);
    swig_free_ref_check(sensor_ref, ipmi_sensor_t);
    swig_free_ref(event_ref);
    return rv;
}

static void
sensor_threshold_event_handler_cl(ipmi_sensor_threshold_event_cb handler,
				  void                           *handler_data,
				  void                           *cb_data)
{
    if (handler != sensor_threshold_event_handler)
	return;
    swig_cb_val *handler_val = handler_data;
    deref_swig_cb_val(handler_val);
}

static int
sensor_discrete_event_handler(ipmi_sensor_t         *sensor,
			      enum ipmi_event_dir_e dir,
			      int                   offset,
			      int                   severity,
			      int                   prev_severity,
			      void                  *cb_data,
			      ipmi_event_t          *event)
{
    swig_cb_val *cb = cb_data;
    swig_ref    sensor_ref;
    char        eventstr[5];
    swig_ref    event_ref;
    int         rv = IPMI_EVENT_NOT_HANDLED;

    sensor_ref = swig_make_ref(sensor, ipmi_sensor_t);
    discrete_event_str(eventstr, offset, dir);
    event_ref = swig_make_ref_destruct(ipmi_event_dup(event), ipmi_event_t);
    swig_call_cb_rv('I', &rv,
		    cb, "discrete_event_cb", "%p%s%d%d%p", &sensor_ref,
		    eventstr, severity, prev_severity, &event_ref);
    swig_free_ref_check(sensor_ref, ipmi_sensor_t);
    swig_free_ref(event_ref);
    return rv;
}

static void
sensor_discrete_event_handler_cl(ipmi_sensor_discrete_event_cb handler,
				 void                          *handler_data,
				 void                          *cb_data)
{
    if (handler != sensor_discrete_event_handler)
	return;
    swig_cb_val *handler_val = handler_data;
    deref_swig_cb_val(handler_val);
}

/*
 * For the event method call_handler to use.
 */
typedef struct event_call_handler_data_s
{
    ipmi_event_t          *event;
    swig_cb_val           *handlers_val;
    ipmi_event_handlers_t *handlers;
    int                   rv;
} event_call_handler_data_t;

static void event_call_handler_mc_cb(ipmi_mc_t *mc, void *cb_data)
{
    event_call_handler_data_t *info = cb_data;
    ipmi_domain_t             *domain = ipmi_mc_get_domain(mc);

    info->rv = ipmi_event_call_handler(domain, info->handlers,
				       info->event, info->handlers_val);
}

/* A generic callback for a lot of things. */
static void
sensor_event_enable_handler(ipmi_sensor_t *sensor,
			    int           err,
			    void          *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    sensor_ref;

    sensor_ref = swig_make_ref(sensor, ipmi_sensor_t);
    swig_call_cb(cb, "sensor_event_enable_cb", "%p%d", &sensor_ref, err);
    swig_free_ref_check(sensor_ref, ipmi_sensor_t);
    /* One-time call, get rid of the CB. */
    deref_swig_cb_val(cb);
}

static void
sensor_get_event_enables_handler(ipmi_sensor_t      *sensor,
				 int                err,
				 ipmi_event_state_t *states,
				 void               *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    sensor_ref;
    char        *st;

    if (ipmi_sensor_get_event_reading_type(sensor)
	== IPMI_EVENT_READING_TYPE_THRESHOLD)
    {
	st = threshold_event_state_to_str(states);
    } else {
	st = discrete_event_state_to_str(states);
    }

    sensor_ref = swig_make_ref(sensor, ipmi_sensor_t);
    swig_call_cb(cb, "sensor_get_event_enable_cb", "%p%d%s",
		 &sensor_ref, err, st);
    swig_free_ref_check(sensor_ref, ipmi_sensor_t);
    free(st);
    /* One-time call, get rid of the CB. */
    deref_swig_cb_val(cb);
}

static void
sensor_rearm_handler(ipmi_sensor_t      *sensor,
		     int                err,
		     void               *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    sensor_ref;

    sensor_ref = swig_make_ref(sensor, ipmi_sensor_t);
    swig_call_cb(cb, "sensor_rearm_cb", "%p%d", &sensor_ref, err);
    swig_free_ref_check(sensor_ref, ipmi_sensor_t);
    /* One-time call, get rid of the CB. */
    deref_swig_cb_val(cb);
}

static void
sensor_get_hysteresis_handler(ipmi_sensor_t *sensor,
			      int           err,
			      unsigned int  positive_hysteresis,
			      unsigned int  negative_hysteresis,
			      void          *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    sensor_ref;

    sensor_ref = swig_make_ref(sensor, ipmi_sensor_t);
    swig_call_cb(cb, "sensor_get_hysteresis_cb", "%p%d%d%d", &sensor_ref, err,
		 positive_hysteresis, negative_hysteresis);
    swig_free_ref_check(sensor_ref, ipmi_sensor_t);
    /* One-time call, get rid of the CB. */
    deref_swig_cb_val(cb);
}

static void
sensor_set_hysteresis_handler(ipmi_sensor_t      *sensor,
			      int                err,
			      void               *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    sensor_ref;

    sensor_ref = swig_make_ref(sensor, ipmi_sensor_t);
    swig_call_cb(cb, "sensor_set_hysteresis_cb", "%p%d", &sensor_ref, err);
    swig_free_ref_check(sensor_ref, ipmi_sensor_t);
    /* One-time call, get rid of the CB. */
    deref_swig_cb_val(cb);
}

static void
sensor_set_thresholds_handler(ipmi_sensor_t      *sensor,
			      int                err,
			      void               *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    sensor_ref;

    sensor_ref = swig_make_ref(sensor, ipmi_sensor_t);
    swig_call_cb(cb, "sensor_set_thresholds_cb", "%p%d", &sensor_ref, err);
    swig_free_ref_check(sensor_ref, ipmi_sensor_t);
    /* One-time call, get rid of the CB. */
    deref_swig_cb_val(cb);
}

static void sensor_get_thresholds_handler(ipmi_sensor_t     *sensor,
					  int               err,
					  ipmi_thresholds_t *th,
					  void              *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    sensor_ref;
    char        *thstr = thresholds_to_str(th);

    sensor_ref = swig_make_ref(sensor, ipmi_sensor_t);
    swig_call_cb(cb, "sensor_get_thresholds_cb", "%p%d%s", &sensor_ref, err,
		 thstr);
    swig_free_ref_check(sensor_ref, ipmi_sensor_t);
    free(thstr);
    /* One-time call, get rid of the CB. */
    deref_swig_cb_val(cb);
}

static void
sensor_get_reading_handler(ipmi_sensor_t             *sensor,
			   int                       err,
			   enum ipmi_value_present_e value_present,
			   unsigned int              raw_value,
			   double                    value,
			   ipmi_states_t             *states,
			   void                      *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    sensor_ref;
    int         raw_set = 0;
    int         value_set = 0;
    char        *statestr;

    if (value_present == IPMI_RAW_VALUE_PRESENT)
	raw_set = 1;
    if (value_present == IPMI_BOTH_VALUES_PRESENT) {
	raw_set = 1;
	value_set = 1;
    }
    sensor_ref = swig_make_ref(sensor, ipmi_sensor_t);
    statestr = threshold_states_to_str(states);
    swig_call_cb(cb, "threshold_reading_cb", "%p%d%d%d%d%f%s", &sensor_ref,
		 err, raw_set, raw_value, value_set, value, statestr);
    swig_free_ref_check(sensor_ref, ipmi_sensor_t);
    free(statestr);
    /* One-time call, get rid of the CB. */
    deref_swig_cb_val(cb);
}

static void
sensor_get_states_handler(ipmi_sensor_t *sensor,
			  int           err,
			  ipmi_states_t *states,
			  void          *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    sensor_ref;
    char        *statestr;

    sensor_ref = swig_make_ref(sensor, ipmi_sensor_t);
    statestr = discrete_states_to_str(states);
    swig_call_cb(cb, "discrete_states_cb", "%p%d%s", &sensor_ref,
		 err, statestr);
    swig_free_ref_check(sensor_ref, ipmi_sensor_t);
    free(statestr);
    /* One-time call, get rid of the CB. */
    deref_swig_cb_val(cb);
}

static int
str_to_color(char *s, int len, int *color)
{
    int i;

    for (i=IPMI_CONTROL_COLOR_BLACK; i<=IPMI_CONTROL_COLOR_ORANGE; i++) {
	if (strncasecmp(s, ipmi_get_color_string(i), len) == 0) {
	    *color = i;
	    return 0;
	}
    }

    return EINVAL;
}

static int
str_to_light_setting(char *s, ipmi_light_setting_t **setting)
{
    int                  rv;
    ipmi_light_setting_t *e;
    int                  start, next;
    int                  count;

    count = 0;
    start = 0;
    rv = next_colon_parm(s, &start, &next);
    while (!rv) {
	start = next;
	count++;
	rv = next_colon_parm(s, &start, &next);
    }
    if (count == 0)
	return EINVAL;

    e = ipmi_alloc_light_settings(count);

    count = 0;
    start = 0;
    rv = next_colon_parm(s, &start, &next);
    while (!rv) {
	int  color, on_time, off_time;
	char *ms;
	int  mstart, mnext;
	char *endstr;
	char buf[100];
	int  len = next - start;

	if (len >= 100)
	    goto out_err;

	memcpy(buf, s+start, len);
	buf[len] = '\0';

	ms = buf;
	mstart = 0;
	rv = next_parm(ms, &mstart, &mnext);
	if (rv)
	    goto out_err;
	len = mnext - mstart;
	if ((len == 2) && (strncasecmp(ms+mstart, "lc", 2) == 0)) {
	    rv = ipmi_light_setting_set_local_control(e, count, 1);
	    if (rv)
		goto out_err;

	    mstart = mnext;
	    rv = next_parm(ms, &mstart, &mnext);
	    if (rv)
		goto out_err;
	}

	rv = str_to_color(ms+mstart, mnext-mstart, &color);
	if (rv)
	    goto out_err;

	mstart = mnext;
	rv = next_parm(ms, &mstart, &mnext);
	if (rv)
	    goto out_err;
	on_time = strtoul(ms+mstart, &endstr, 0);
	if (endstr != (ms+mnext))
	    goto out_err;

	mstart = mnext;
	rv = next_parm(ms, &mstart, &mnext);
	if (rv)
	    goto out_err;
	off_time = strtoul(ms+mstart, &endstr, 0);
	if (endstr != (ms+mnext))
	    goto out_err;

	rv = ipmi_light_setting_set_color(e, count, color);
	rv |= ipmi_light_setting_set_on_time(e, count, on_time);
	rv |= ipmi_light_setting_set_off_time(e, count, off_time);
	if (rv)
	    goto out_err;

	count++;

	start = next;
	rv = next_colon_parm(s, &start, &next);
    }
    
    *setting = e;
    return 0;

 out_err:
    ipmi_free_light_settings(e);
    return EINVAL;
}

static char *
light_setting_to_str(ipmi_light_setting_t *e)
{
    char *s, *str;
    int  i;
    int  count = ipmi_light_setting_get_count(e);
    char dummy[1];
    int  size = 0;

    for (i = 0; i < count; i++) {
	int val;
	size += 1; /* For the colon */
	val = 0;
	ipmi_light_setting_in_local_control(e, i, &val);
	if (val)
	    size += 3;
	val = 0;
	ipmi_light_setting_get_color(e, i, &val);
	size += strlen(ipmi_get_color_string(val)) + 1;
	val = 0;
	ipmi_light_setting_get_on_time(e, i, &val);
	size += snprintf(dummy, 1, "%d ", val);
	val = 0;
	ipmi_light_setting_get_off_time(e, i, &val);
	size += snprintf(dummy, 1, "%d ", val);
    }

    str = malloc(size + 1);
    if (!str)
	return NULL;
    s = str;

    for (i = 0; i < count; i++) {
	int val;
	const char *ov;

	val = 0;
	ipmi_light_setting_in_local_control(e, i, &val);
	if (val) {
	    strcpy(s, "lc ");
	    s += 3;
	}

	val = 0;
	ipmi_light_setting_get_color(e, i, &val);
	ov = ipmi_get_color_string(val);
	strcpy(s, ov);
	s += strlen(ov);
	*s = ' ';
	s++;

	val = 0;
	ipmi_light_setting_get_on_time(e, i, &val);
	s += sprintf(s, "%d ", val);

	val = 0;
	ipmi_light_setting_get_off_time(e, i, &val);
	s += sprintf(s, "%d", val);

	*s = ':';
	s++;
    }
    if (s != str) {
	/* Remove the final colon. */
	s--;
	*s = '\0';
    } else {
	*s = '\0';
    }

    return str;
}

static void
handle_control_cb(ipmi_control_t *control, void *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    control_ref;

    control_ref = swig_make_ref(control, ipmi_control_t);
    swig_call_cb(cb, "control_cb", "%p", &control_ref);
    swig_free_ref_check(control_ref, ipmi_control_t);
}

static void
control_val_set_handler(ipmi_control_t *control, int err, void *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    control_ref;

    control_ref = swig_make_ref(control, ipmi_control_t);
    swig_call_cb(cb, "control_set_val_cb", "%p%d", &control_ref, err);
    swig_free_ref_check(control_ref, ipmi_control_t);
    /* One-time call, get rid of the CB. */
    deref_swig_cb_val(cb);
}

static void
control_val_get_handler(ipmi_control_t *control, int err, int *val,
			void *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    control_ref;

    control_ref = swig_make_ref(control, ipmi_control_t);
    if (err) {
	/* On err, value may be NULL */
	int dummy;
	swig_call_cb(cb, "control_get_val_cb", "%p%d%*p", &control_ref, err,
		     1, &dummy);
    } else {
	swig_call_cb(cb, "control_get_val_cb", "%p%d%*p", &control_ref, err,
		     ipmi_control_get_num_vals(control), val);
    }
    swig_free_ref_check(control_ref, ipmi_control_t);
    /* One-time call, get rid of the CB. */
    deref_swig_cb_val(cb);
}

static void
control_val_get_light_handler(ipmi_control_t *control, int err,
			      ipmi_light_setting_t *val,
			      void *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    control_ref;
    char        *str;
    int		free_str = 1;

    control_ref = swig_make_ref(control, ipmi_control_t);
    str = light_setting_to_str(val);
    if (!str) {
	str = "err";
	free_str = 0;
    }
    swig_call_cb(cb, "control_get_light_cb", "%p%d%s", &control_ref, err, str);
    swig_free_ref_check(control_ref, ipmi_control_t);
    /* One-time call, get rid of the CB. */
    deref_swig_cb_val(cb);
    if (free_str)
	free(str);
}

static void
control_val_get_id_handler(ipmi_control_t *control, int err,
			   unsigned char *val, int length,
			   void *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    control_ref;

    control_ref = swig_make_ref(control, ipmi_control_t);
    swig_call_cb(cb, "control_get_id_cb", "%p%d%*s", &control_ref, err,
		 length, val);
    swig_free_ref_check(control_ref, ipmi_control_t);
    /* One-time call, get rid of the CB. */
    deref_swig_cb_val(cb);
}

static int
control_val_event_handler(ipmi_control_t *control, int *valid_vals, int *val,
			  void *cb_data, ipmi_event_t *event)
{
    swig_cb_val *cb = cb_data;
    swig_ref    control_ref;
    swig_ref    event_ref;
    int         rv = IPMI_EVENT_NOT_HANDLED;

    control_ref = swig_make_ref(control, ipmi_control_t);
    event_ref = swig_make_ref_destruct(ipmi_event_dup(event), ipmi_event_t);
    swig_call_cb_rv('I', &rv,
		    cb, "control_event_val_cb", "%p%p%*p%*p", &control_ref,
		    &event_ref,
		    ipmi_control_get_num_vals(control), valid_vals,
		    ipmi_control_get_num_vals(control), val);
    swig_free_ref_check(control_ref, ipmi_control_t);
    swig_free_ref(event_ref);
    return rv;
}

static void
control_val_event_handler_cl(ipmi_control_val_event_cb handler,
			     void                      *handler_data,
			     void                      *cb_data)
{
    if (handler != control_val_event_handler)
	return;
    swig_cb_val *handler_val = handler_data;
    deref_swig_cb_val(handler_val);
}

static void
lanparm_get_parm(ipmi_lanparm_t *lanparm,
		 int            err,
		 unsigned char  *data,
		 unsigned int   data_len,
		 void           *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    lanparm_ref;

    lanparm_ref = swig_make_ref_destruct(lanparm, ipmi_lanparm_t);
    swig_call_cb(cb, "lanparm_got_parm_cb", "%p%d%*s", &lanparm_ref, err,
		 data_len, (char *) data);
    /* One-time call, get rid of the CB. */
    deref_swig_cb_val(cb);
    swig_free_ref(lanparm_ref);
}

static void
lanparm_set_parm(ipmi_lanparm_t *lanparm,
		 int            err,
		 void           *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    lanparm_ref;

    if (cb) {
	lanparm_ref = swig_make_ref_destruct(lanparm, ipmi_lanparm_t);
	swig_call_cb(cb, "lanparm_set_parm_cb", "%p%d", &lanparm_ref, err);
	/* One-time call, get rid of the CB. */
	deref_swig_cb_val(cb);
	swig_free_ref(lanparm_ref);
    }
}

static void
lanparm_get_config(ipmi_lanparm_t    *lanparm,
		   int               err,
		   ipmi_lan_config_t *config,
		   void              *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    lanparm_ref;
    swig_ref    config_ref;

    lanparm_ref = swig_make_ref_destruct(lanparm, ipmi_lanparm_t);
    config_ref = swig_make_ref_destruct(config, ipmi_lan_config_t);
    swig_call_cb(cb, "lanparm_got_config_cb", "%p%d%p", &lanparm_ref, err,
		 &config_ref);
    /* One-time call, get rid of the CB. */
    deref_swig_cb_val(cb);
    swig_free_ref(lanparm_ref);
    swig_free_ref(config_ref);
}

static void
lanparm_set_config(ipmi_lanparm_t    *lanparm,
		   int               err,
		   void              *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    lanparm_ref;

    if (cb) {
	lanparm_ref = swig_make_ref_destruct(lanparm, ipmi_lanparm_t);
	swig_call_cb(cb, "lanparm_set_config_cb", "%p%d", &lanparm_ref, err);
	/* One-time call, get rid of the CB. */
	deref_swig_cb_val(cb);
	swig_free_ref(lanparm_ref);
    }
}

static void
lanparm_clear_lock(ipmi_lanparm_t    *lanparm,
		   int               err,
		   void              *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    lanparm_ref;

    if (cb) {
	lanparm_ref = swig_make_ref_destruct(lanparm, ipmi_lanparm_t);
	swig_call_cb(cb, "lanparm_clear_lock_cb", "%p%d", &lanparm_ref, err);
	/* One-time call, get rid of the CB. */
	deref_swig_cb_val(cb);
	swig_free_ref(lanparm_ref);
    }
}

static void
get_pef(ipmi_pef_t *pef, int err, void *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    pef_ref;

    pef_ref = swig_make_ref_destruct(pef, ipmi_pef_t);
    ipmi_pef_ref(pef);
    swig_call_cb(cb, "got_pef_cb", "%p%d", &pef_ref, err);
    /* One-time call, get rid of the CB. */
    deref_swig_cb_val(cb);
    swig_free_ref(pef_ref);
}

static void
pef_get_parm(ipmi_pef_t    *pef,
	     int           err,
	     unsigned char *data,
	     unsigned int  data_len,
	     void          *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    pef_ref;

    pef_ref = swig_make_ref_destruct(pef, ipmi_pef_t);
    swig_call_cb(cb, "pef_got_parm_cb", "%p%d%*s", &pef_ref, err,
		 data_len, (char *) data);
    /* One-time call, get rid of the CB. */
    deref_swig_cb_val(cb);
    swig_free_ref(pef_ref);
}

static void
pef_set_parm(ipmi_pef_t *pef,
	     int        err,
	     void       *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    pef_ref;

    if (cb) {
	pef_ref = swig_make_ref_destruct(pef, ipmi_pef_t);
	swig_call_cb(cb, "pef_set_parm_cb", "%p%d", &pef_ref, err);
	/* One-time call, get rid of the CB. */
	deref_swig_cb_val(cb);
	swig_free_ref(pef_ref);
    }
}

static void
pef_get_config(ipmi_pef_t        *pef,
	       int               err,
	       ipmi_pef_config_t *config,
	       void              *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    pef_ref;
    swig_ref    config_ref;

    pef_ref = swig_make_ref_destruct(pef, ipmi_pef_t);
    config_ref = swig_make_ref_destruct(config, ipmi_pef_config_t);
    swig_call_cb(cb, "pef_got_config_cb", "%p%d%p", &pef_ref, err,
		 &config_ref);
    /* One-time call, get rid of the CB. */
    deref_swig_cb_val(cb);
    swig_free_ref(pef_ref);
    swig_free_ref(config_ref);
}

static void
pef_set_config(ipmi_pef_t    *pef,
	       int           err,
	       void          *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    pef_ref;

    if (cb) {
	pef_ref = swig_make_ref_destruct(pef, ipmi_pef_t);
	swig_call_cb(cb, "pef_set_config_cb", "%p%d", &pef_ref, err);
	/* One-time call, get rid of the CB. */
	deref_swig_cb_val(cb);
	swig_free_ref(pef_ref);
    }
}

static void
pef_clear_lock(ipmi_pef_t    *pef,
	       int           err,
	       void          *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    pef_ref;

    if (cb) {
	pef_ref = swig_make_ref_destruct(pef, ipmi_pef_t);
	swig_call_cb(cb, "pef_clear_lock_cb", "%p%d", &pef_ref, err);
	/* One-time call, get rid of the CB. */
	deref_swig_cb_val(cb);
	swig_free_ref(pef_ref);
    }
}

static void
get_pet(ipmi_pet_t *pet, int err, void *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    pet_ref;

    pet_ref = swig_make_ref_destruct(pet, ipmi_pet_t);
    ipmi_pet_ref(pet);
    swig_call_cb(cb, "got_pet_cb", "%p%d", &pet_ref, err);
    /* One-time call, get rid of the CB. */
    deref_swig_cb_val(cb);
    swig_free_ref(pet_ref);
}

static void
event_deleted_handler(ipmi_domain_t *domain, int err, void *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    domain_ref;

    domain_ref = swig_make_ref(domain, ipmi_domain_t);
    swig_call_cb(cb, "event_delete_cb", "%p%d", &domain_ref, err);
    swig_free_ref_check(domain_ref, ipmi_domain_t);
    /* One-time call, get rid of the CB. */
    deref_swig_cb_val(cb);
}

static void
sol_connection_state_change_cb(ipmi_sol_conn_t *conn,
			       ipmi_sol_state  state,
			       int             error,
			       void            *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    conn_ref;

    conn_ref = swig_make_ref(conn, ipmi_sol_conn_t);
    swig_call_cb(cb, "sol_connection_state_change", "%p%d%d",
		 &conn_ref, state, error);
    swig_free_ref_check(conn_ref, ipmi_sol_conn_t);
}


static int
sol_data_received_cb(ipmi_sol_conn_t *conn,
		     const void      *buf,
		     size_t          count,
		     void            *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    conn_ref;
    int         rv = 0;

    conn_ref = swig_make_ref(conn, ipmi_sol_conn_t);
    swig_call_cb_rv('i', &rv, cb, "sol_data_received", "%p%*s",
		    &conn_ref, (int) count, (char *) buf);
    swig_free_ref_check(conn_ref, ipmi_sol_conn_t);
    return rv;
}

static void
sol_break_detected_cb(ipmi_sol_conn_t *conn,
		      void            *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    conn_ref;

    conn_ref = swig_make_ref(conn, ipmi_sol_conn_t);
    swig_call_cb(cb, "sol_break_detected", "%p", &conn_ref);
    swig_free_ref_check(conn_ref, ipmi_sol_conn_t);
}

static void
sol_bmc_transmit_overrun_cb(ipmi_sol_conn_t *conn,
			    void            *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    conn_ref;

    conn_ref = swig_make_ref(conn, ipmi_sol_conn_t);
    swig_call_cb(cb, "sol_bmc_transmit_overrun", "%p", &conn_ref);
    swig_free_ref_check(conn_ref, ipmi_sol_conn_t);
}

static void
sol_write_complete_cb(ipmi_sol_conn_t *conn,
		      int             error,
		      void            *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    conn_ref;

    conn_ref = swig_make_ref(conn, ipmi_sol_conn_t);
    swig_call_cb(cb, "sol_write_complete", "%p%d", &conn_ref, error);
    swig_free_ref_check(conn_ref, ipmi_sol_conn_t);
    /* One-time callback */
    deref_swig_cb_val(cb);
}

static void
sol_send_break_cb(ipmi_sol_conn_t *conn,
		  int             error,
		  void            *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    conn_ref;

    conn_ref = swig_make_ref(conn, ipmi_sol_conn_t);
    swig_call_cb(cb, "sol_send_break", "%p%d", &conn_ref, error);
    swig_free_ref_check(conn_ref, ipmi_sol_conn_t);
    /* One-time callback */
    deref_swig_cb_val(cb);
}

static void
sol_set_CTS_assertable_cb(ipmi_sol_conn_t *conn,
			  int             error,
			  void            *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    conn_ref;

    conn_ref = swig_make_ref(conn, ipmi_sol_conn_t);
    swig_call_cb(cb, "sol_set_CTS_assertable", "%p%d", &conn_ref, error);
    swig_free_ref_check(conn_ref, ipmi_sol_conn_t);
    /* One-time callback */
    deref_swig_cb_val(cb);
}

static void
sol_set_DCD_DSR_asserted_cb(ipmi_sol_conn_t *conn,
			    int             error,
			    void            *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    conn_ref;

    conn_ref = swig_make_ref(conn, ipmi_sol_conn_t);
    swig_call_cb(cb, "sol_set_DCD_DSR_asserted", "%p%d", &conn_ref, error);
    swig_free_ref_check(conn_ref, ipmi_sol_conn_t);
    /* One-time callback */
    deref_swig_cb_val(cb);
}

static void
sol_set_RI_asserted_cb(ipmi_sol_conn_t *conn,
		       int             error,
		       void            *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    conn_ref;

    conn_ref = swig_make_ref(conn, ipmi_sol_conn_t);
    swig_call_cb(cb, "sol_set_RI_asserted", "%p%d", &conn_ref, error);
    swig_free_ref_check(conn_ref, ipmi_sol_conn_t);
    /* One-time callback */
    deref_swig_cb_val(cb);
}

static void
sol_flush_complete_cb(ipmi_sol_conn_t *conn,
		      int             error,
		      int             queue_selectors_flushed,
		      void            *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    conn_ref;

    conn_ref = swig_make_ref(conn, ipmi_sol_conn_t);
    swig_call_cb(cb, "sol_flush_complete", "%p%d%d", &conn_ref, error,
		 queue_selectors_flushed);
    swig_free_ref_check(conn_ref, ipmi_sol_conn_t);
    /* One-time callback */
    deref_swig_cb_val(cb);
}

static void
solparm_get_parm(ipmi_solparm_t *solparm,
		 int            err,
		 unsigned char  *data,
		 unsigned int   data_len,
		 void           *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    solparm_ref;

    solparm_ref = swig_make_ref_destruct(solparm, ipmi_solparm_t);
    swig_call_cb(cb, "solparm_got_parm_cb", "%p%d%*s", &solparm_ref, err,
		 data_len, (char *) data);
    /* One-time call, get rid of the CB. */
    deref_swig_cb_val(cb);
    swig_free_ref(solparm_ref);
}

static void
solparm_set_parm(ipmi_solparm_t *solparm,
		 int            err,
		 void           *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    solparm_ref;

    if (cb) {
	solparm_ref = swig_make_ref_destruct(solparm, ipmi_solparm_t);
	swig_call_cb(cb, "solparm_set_parm_cb", "%p%d", &solparm_ref, err);
	/* One-time call, get rid of the CB. */
	deref_swig_cb_val(cb);
	swig_free_ref(solparm_ref);
    }
}

static void
solparm_get_config(ipmi_solparm_t    *solparm,
		   int               err,
		   ipmi_sol_config_t *config,
		   void              *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    solparm_ref;
    swig_ref    config_ref;

    solparm_ref = swig_make_ref_destruct(solparm, ipmi_solparm_t);
    config_ref = swig_make_ref_destruct(config, ipmi_sol_config_t);
    swig_call_cb(cb, "solparm_got_config_cb", "%p%d%p", &solparm_ref, err,
		 &config_ref);
    /* One-time call, get rid of the CB. */
    deref_swig_cb_val(cb);
    swig_free_ref(solparm_ref);
    swig_free_ref(config_ref);
}

static void
solparm_set_config(ipmi_solparm_t    *solparm,
		   int               err,
		   void              *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    solparm_ref;

    if (cb) {
	solparm_ref = swig_make_ref_destruct(solparm, ipmi_solparm_t);
	swig_call_cb(cb, "solparm_set_config_cb", "%p%d", &solparm_ref, err);
	/* One-time call, get rid of the CB. */
	deref_swig_cb_val(cb);
	swig_free_ref(solparm_ref);
    }
}

static void
solparm_clear_lock(ipmi_solparm_t    *solparm,
		   int               err,
		   void              *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    solparm_ref;

    if (cb) {
	solparm_ref = swig_make_ref_destruct(solparm, ipmi_solparm_t);
	swig_call_cb(cb, "solparm_clear_lock_cb", "%p%d", &solparm_ref, err);
	/* One-time call, get rid of the CB. */
	deref_swig_cb_val(cb);
	swig_free_ref(solparm_ref);
    }
}

#if defined(HAVE_GLIB) || defined(HAVE_GLIB12)
#include <OpenIPMI/ipmi_glib.h>
static void
glib_handle_log(const char *domain,
		const char *pfx,
		const char *message)
{
    swig_cb_val *handler = swig_log_handler;

    if (! handler)
	return;

    swig_call_cb(handler, "log", "%s%s", pfx, message);
}

#if defined(HAVE_GLIB) && defined(HAVE_GLIB12)
#include <dlfcn.h>
#endif

/*
 * Initialize the OS handler with the glib version.
 */
os_handler_t *
init_glib_shim(char *ver)
{
    os_handler_t *swig_os_hnd;
#if defined(HAVE_GLIB) && defined(HAVE_GLIB12)
/* Two versions of glib.  Go through special machinations to make this
   work right.  We can't directly link with glib, we have to dlopen it
   to get the right version. */

    static char  *olibst = "libOpenIPMIglib%s.so";
    char         dummy[1];
    char         *name;
    void         *hndl;
    os_handler_t *(*get)(int);
    void         (*setlog)(void (*hndlr)(const char *domain,
					 const char *pfx,
					 const char *msg));
    int          len;

    len = snprintf(dummy, 1, olibst, ver);
    name = malloc(len+1);
    if (!name) {
	fprintf(stderr, "Unable to allocation memory for glib\n");
	abort();
    }
    snprintf(name, len+1, olibst, ver);
    hndl = dlopen(name, RTLD_LAZY | RTLD_GLOBAL);
    if (!hndl) {
	fprintf(stderr, "Unable to open the glib library: %s: %s\n",
		name, dlerror());
	free(name);
	abort();
    }
    free(name);
    get = dlsym(hndl, "ipmi_glib_get_os_handler");
    if (!get) {
	fprintf(stderr,
		"Could not find glib function: ipmi_glib_get_os_handler: %s\n",
		dlerror());
	abort();
    }
    setlog = dlsym(hndl, "ipmi_glib_set_log_handler");
    if (!setlog) {
	fprintf(stderr,
		"Could not find glib function: ipmi_glib_set_log_handler: %s\n",
		dlerror());
	abort();
    }

    swig_os_hnd = get(0);
    swig_os_hnd->set_log_handler(swig_os_hnd, openipmi_swig_vlog);
    ipmi_init(swig_os_hnd);
    ipmi_cmdlang_init(swig_os_hnd);
    setlog(glib_handle_log);
#else
    swig_os_hnd = ipmi_glib_get_os_handler(0);
    swig_os_hnd->set_log_handler(swig_os_hnd, openipmi_swig_vlog);
    ipmi_init(swig_os_hnd);
    ipmi_cmdlang_init(swig_os_hnd);
    ipmi_glib_set_log_handler(glib_handle_log);
#endif
    return swig_os_hnd;
}
#endif


SWIGINTERN char *ipmi_domain_t_get_name(ipmi_domain_t *self){
	char name[IPMI_DOMAIN_NAME_LEN];

	ipmi_domain_get_name(self, name, sizeof(name));
	return strdup(name);
    }

SWIGINTERNINLINE SV *
SWIG_FromCharPtrAndSize(const char* carray, size_t size)
{
  SV *obj = sv_newmortal();
  if (carray) {
    sv_setpvn(obj, carray, size);
  } else {
    sv_setsv(obj, &PL_sv_undef);
  }
  return obj;
}


SWIGINTERNINLINE SV * 
SWIG_FromCharPtr(const char *cptr)
{ 
  return SWIG_FromCharPtrAndSize(cptr, (cptr ? strlen(cptr) : 0));
}

SWIGINTERN ipmi_domain_id_t *ipmi_domain_t_get_id(ipmi_domain_t *self){
	ipmi_domain_id_t *rv = malloc(sizeof(*rv));
	if (rv)
	    *rv = ipmi_domain_convert_to_id(self);
	return rv;
    }
SWIGINTERN char *ipmi_domain_t_get_guid(ipmi_domain_t *self){
	char          *str = NULL;
	unsigned char guid[16];

	if (ipmi_domain_get_guid(self, guid) == 0) {
	    str = malloc(16 * 3);
	    if (str) {
		char *s = str;
		int  i;
		s += sprintf(s, "%2.2x", guid[0]);
		for (i=1; i<16; i++)
		    s += sprintf(s, " %2.2x", guid[i]);
	    }
	}
	return str;
    }
SWIGINTERN int ipmi_domain_t_close(ipmi_domain_t *self,swig_cb *handler){
	int         rv;
	swig_cb_val *handler_val;

	IPMI_SWIG_C_CB_ENTRY
	if (! valid_swig_cb(handler, domain_close_done_cb))
	    rv = EINVAL;
	else {
	    handler_val = ref_swig_cb(handler, domain_close_done_cb);
	    rv = ipmi_domain_close(self, domain_close_done, handler_val);
	    if (rv)
		deref_swig_cb_val(handler_val);
	}
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_domain_t_add_connect_change_handler(ipmi_domain_t *self,swig_cb *handler){
	/* cleanup handler is added when the domain is added. */
	 	int         rv;							 	swig_cb_val *handler_val;					 	IPMI_SWIG_C_CB_ENTRY						 	if (! valid_swig_cb(handler, conn_change_cb))				 	    rv = EINVAL;						 	else {								 	    handler_val = ref_swig_cb(handler, conn_change_cb);			 	    rv = ipmi_domain_add_connect_change_handler		 		 (self, domain_connect_change_handler, handler_val);	 	    if (rv)							 		deref_swig_cb_val(handler_val);				 	}								 	IPMI_SWIG_C_CB_EXIT						 	return rv;;
    }
SWIGINTERN int ipmi_domain_t_remove_connect_change_handler(ipmi_domain_t *self,swig_cb *handler){
	 	int         rv;							 	swig_cb_val *handler_val;					 	IPMI_SWIG_C_CB_ENTRY						 	if (! valid_swig_cb(handler, conn_change_cb))				 	    rv = EINVAL;						 	else {								 	    handler_val = get_swig_cb(handler, conn_change_cb);			 	    rv = ipmi_domain_remove_connect_change_handler		 		 (self, domain_connect_change_handler, handler_val);	 	    if (!rv)							 		deref_swig_cb_val(handler_val);				 	}								 	IPMI_SWIG_C_CB_EXIT						 	return rv;;
    }
SWIGINTERN int ipmi_domain_t_iterate_connections(ipmi_domain_t *self,swig_cb *handler){
	swig_cb_val *handler_val;
	int         rv = 0;

	IPMI_SWIG_C_CB_ENTRY
	if (! valid_swig_cb(handler, domain_iter_connection_cb))
	    rv = EINVAL;
	else {
	    handler_val = get_swig_cb(handler, domain_iter_connection_cb);
	    ipmi_domain_iterate_connections(self,
					    domain_iterate_connections_handler,
					    handler_val);
	}
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_domain_t_activate_connection(ipmi_domain_t *self,int connection){
	int rv;
	IPMI_SWIG_C_CB_ENTRY
	rv = ipmi_domain_activate_connection(self, connection);
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_domain_t_is_connection_active(ipmi_domain_t *self,int connection,unsigned int *active){
	return ipmi_domain_is_connection_active(self, connection, active);
    }
SWIGINTERN int ipmi_domain_t_is_connection_up(ipmi_domain_t *self,int connection,unsigned int *up){
	return ipmi_domain_is_connection_up(self, connection, up);
    }
SWIGINTERN int ipmi_domain_t_num_connection_ports(ipmi_domain_t *self,int connection,unsigned int *ports){
	return ipmi_domain_num_connection_ports(self, connection, ports);
    }
SWIGINTERN int ipmi_domain_t_is_connection_port_up(ipmi_domain_t *self,int connection,int port,unsigned int *up){
	return ipmi_domain_is_connection_port_up(self, connection, port, up);
    }
SWIGINTERN char *ipmi_domain_t_get_port_info(ipmi_domain_t *self,int connection,int port){
	int rv;
	char buf[256];
	int  len = sizeof(buf);
	rv = ipmi_domain_get_port_info(self, connection, port, buf, &len);
	if (rv)
	    return NULL;
	return strdup(buf);
    }
SWIGINTERN ipmi_args_t *ipmi_domain_t_get_connection_args(ipmi_domain_t *self,int connection){
	return ipmi_domain_get_connection_args(self, connection);
    }
SWIGINTERN char *ipmi_domain_t_get_connection_type(ipmi_domain_t *self,int connection){
	return ipmi_domain_get_connection_type(self, connection);
    }
SWIGINTERN int ipmi_domain_t_add_entity_update_handler(ipmi_domain_t *self,swig_cb *handler){
	ipmi_domain_add_entity_update_handler_cl
	    (self, domain_entity_update_handler_cl, NULL);
	 	int         rv;							 	swig_cb_val *handler_val;					 	IPMI_SWIG_C_CB_ENTRY						 	if (! valid_swig_cb(handler, entity_update_cb))				 	    rv = EINVAL;						 	else {								 	    handler_val = ref_swig_cb(handler, entity_update_cb);			 	    rv = ipmi_domain_add_entity_update_handler		 		 (self, domain_entity_update_handler, handler_val);	 	    if (rv)							 		deref_swig_cb_val(handler_val);				 	}								 	IPMI_SWIG_C_CB_EXIT						 	return rv;;
    }
SWIGINTERN int ipmi_domain_t_remove_entity_update_handler(ipmi_domain_t *self,swig_cb *handler){
	 	int         rv;							 	swig_cb_val *handler_val;					 	IPMI_SWIG_C_CB_ENTRY						 	if (! valid_swig_cb(handler, entity_update_cb))				 	    rv = EINVAL;						 	else {								 	    handler_val = get_swig_cb(handler, entity_update_cb);			 	    rv = ipmi_domain_remove_entity_update_handler		 		 (self, domain_entity_update_handler, handler_val);	 	    if (!rv)							 		deref_swig_cb_val(handler_val);				 	}								 	IPMI_SWIG_C_CB_EXIT						 	return rv;;
    }
SWIGINTERN int ipmi_domain_t_iterate_entities(ipmi_domain_t *self,swig_cb *handler){
	swig_cb_val *handler_val;
	int         rv = 0;

	IPMI_SWIG_C_CB_ENTRY
	if (! valid_swig_cb(handler, domain_iter_entities_cb))
	    rv = EINVAL;
	else {
	    handler_val = get_swig_cb(handler, domain_iter_entities_cb);
	    ipmi_domain_iterate_entities(self, domain_iterate_entities_handler,
					 handler_val);
	}
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_domain_t_add_mc_update_handler(ipmi_domain_t *self,swig_cb *handler){
	ipmi_domain_add_mc_updated_handler_cl
	    (self, domain_mc_updated_handler_cl, NULL);
	 	int         rv;							 	swig_cb_val *handler_val;					 	IPMI_SWIG_C_CB_ENTRY						 	if (! valid_swig_cb(handler, mc_update_cb))				 	    rv = EINVAL;						 	else {								 	    handler_val = ref_swig_cb(handler, mc_update_cb);			 	    rv = ipmi_domain_add_mc_updated_handler		 		 (self, domain_mc_updated_handler, handler_val);	 	    if (rv)							 		deref_swig_cb_val(handler_val);				 	}								 	IPMI_SWIG_C_CB_EXIT						 	return rv;;
    }
SWIGINTERN int ipmi_domain_t_remove_mc_update_handler(ipmi_domain_t *self,swig_cb *handler){
	 	int         rv;							 	swig_cb_val *handler_val;					 	IPMI_SWIG_C_CB_ENTRY						 	if (! valid_swig_cb(handler, mc_update_cb))				 	    rv = EINVAL;						 	else {								 	    handler_val = get_swig_cb(handler, mc_update_cb);			 	    rv = ipmi_domain_remove_mc_updated_handler		 		 (self, domain_mc_updated_handler, handler_val);	 	    if (!rv)							 		deref_swig_cb_val(handler_val);				 	}								 	IPMI_SWIG_C_CB_EXIT						 	return rv;;
    }
SWIGINTERN int ipmi_domain_t_iterate_mcs(ipmi_domain_t *self,swig_cb *handler){
	swig_cb_val *handler_val;
	int         rv = 0;

	IPMI_SWIG_C_CB_ENTRY
	if (! valid_swig_cb(handler, domain_iter_mc_cb))
	    rv = EINVAL;
	else {
	    handler_val = get_swig_cb(handler, domain_iter_mc_cb);
	    ipmi_domain_iterate_mcs(self, domain_iterate_mcs_handler,
				    handler_val);
	}
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN char const *ipmi_domain_t_get_type(ipmi_domain_t *self){
	return ipmi_domain_get_type_string(ipmi_domain_get_type(self));
    }
SWIGINTERN int ipmi_domain_t_start_ipmb_mc_scan(ipmi_domain_t *self,int channel,int start_addr,int end_addr,swig_cb *handler){
	int            rv;
	swig_cb_val    *handler_val = NULL;
	ipmi_domain_cb domain_cb = NULL;

	IPMI_SWIG_C_CB_ENTRY
	if (!nil_swig_cb(handler)) {
	    if (!valid_swig_cb(handler, domain_ipmb_mc_scan_cb)) {
		rv = EINVAL;
		goto out_err;
	    }
	    domain_cb = ipmb_mc_scan_handler;
	    handler_val = ref_swig_cb(handler, domain_ipmb_mc_scan_cb);
	}
	rv = ipmi_start_ipmb_mc_scan(self, channel, start_addr, end_addr,
				     domain_cb, handler_val);
	if (rv && handler_val)
	    deref_swig_cb_val(handler_val);
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN void ipmi_domain_t_start_full_ipmb_scan(ipmi_domain_t *self){
	ipmi_domain_start_full_ipmb_scan(self);
    }

SWIGINTERN swig_type_info*
SWIG_pchar_descriptor(void)
{
  static swig_type_info* info = 0;
  if (!info) {
    info = SWIG_TypeQuery("_p_char");
  }
  return info;
}


SWIGINTERN int
SWIG_AsCharPtrAndSize(SV *obj, char** cptr, size_t* psize, int *alloc)
{
  if (SvMAGICAL(obj)) {
     SV *tmp = sv_newmortal();
     SvSetSV(tmp, obj);
     obj = tmp;
  }
  if (SvPOK(obj)) {
    STRLEN len = 0;
    char *cstr = SvPV(obj, len); 
    size_t size = len + 1;
    if (cptr) {
      if (alloc) {
	if (*alloc == SWIG_NEWOBJ) {
	  *cptr = (char *)memcpy(malloc((size)*sizeof(char)), cstr, sizeof(char)*(size));
	} else {
	  *cptr = cstr;
	  *alloc = SWIG_OLDOBJ;
	}
      }
    }
    if (psize) *psize = size;
    return SWIG_OK;
  } else {
    swig_type_info* pchar_descriptor = SWIG_pchar_descriptor();
    if (pchar_descriptor) {
      char* vptr = 0; 
      if (SWIG_ConvertPtr(obj, (void**)&vptr, pchar_descriptor, 0) == SWIG_OK) {
	if (cptr) *cptr = vptr;
	if (psize) *psize = vptr ? (strlen(vptr) + 1) : 0;
	if (alloc) *alloc = SWIG_OLDOBJ;
	return SWIG_OK;
      }
    }
  }
  return SWIG_TypeError;
}




SWIGINTERN int ipmi_domain_t_send_command_addr(ipmi_domain_t *self,char *addr,int lun,int netfn,int cmd,intarray msg_data,swig_cb *handler){
	int                          rv;
	swig_cb_val                  *handler_val = NULL;
	ipmi_addr_response_handler_t msg_cb = NULL;
	ipmi_addr_t                  iaddr;
	unsigned int                 addr_len;
	ipmi_msg_t                   msg;
	unsigned char                data[MAX_IPMI_DATA_SIZE];
	unsigned int                 data_len;

	IPMI_SWIG_C_CB_ENTRY
	rv = parse_ipmi_addr(addr, lun, &iaddr, &addr_len);
	if (rv)
	    goto out_err;

	msg.netfn = netfn;
	msg.cmd = cmd;
	msg.data = data;
	rv = parse_ipmi_data(msg_data, data, sizeof(data), &data_len);
	msg.data_len = data_len;
	if (rv)
	    goto out_err;

	if (!nil_swig_cb(handler)) {
	    if (!valid_swig_cb(handler, addr_cmd_cb)) {
		rv = EINVAL;
		goto out_err;
	    }
	    msg_cb = domain_msg_cb;
	    handler_val = ref_swig_cb(handler, addr_cmd_cb);
	}
	rv = ipmi_send_command_addr(self, &iaddr, addr_len, &msg,
				    msg_cb, handler_val, NULL);
	if (rv && handler_val)
	    deref_swig_cb_val(handler_val);
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_domain_t_detect_presence_changes(ipmi_domain_t *self,int force){
	return ipmi_detect_domain_presence_changes(self, force);
    }
SWIGINTERN void ipmi_domain_t_set_sel_rescan_time(ipmi_domain_t *self,int seconds){
	return ipmi_domain_set_sel_rescan_time(self, seconds);
    }
SWIGINTERN int ipmi_domain_t_get_sel_rescan_time(ipmi_domain_t *self){
	return ipmi_domain_get_sel_rescan_time(self);
    }
SWIGINTERN void ipmi_domain_t_set_ipmb_rescan_time(ipmi_domain_t *self,int seconds){
	return ipmi_domain_set_ipmb_rescan_time(self, seconds);
    }
SWIGINTERN int ipmi_domain_t_get_ipmb_rescan_time(ipmi_domain_t *self){
	return ipmi_domain_get_ipmb_rescan_time(self);
    }
SWIGINTERN int ipmi_domain_t_add_event_handler(ipmi_domain_t *self,swig_cb *handler){
	ipmi_domain_add_event_handler_cl
	    (self, domain_event_handler_cl, NULL);
	 	int         rv;							 	swig_cb_val *handler_val;					 	IPMI_SWIG_C_CB_ENTRY						 	if (! valid_swig_cb(handler, event_cb))				 	    rv = EINVAL;						 	else {								 	    handler_val = ref_swig_cb(handler, event_cb);			 	    rv = ipmi_domain_add_event_handler		 		 (self, domain_event_handler, handler_val);	 	    if (rv)							 		deref_swig_cb_val(handler_val);				 	}								 	IPMI_SWIG_C_CB_EXIT						 	return rv;;
    }
SWIGINTERN int ipmi_domain_t_remove_event_handler(ipmi_domain_t *self,swig_cb *handler){
	 	int         rv;							 	swig_cb_val *handler_val;					 	IPMI_SWIG_C_CB_ENTRY						 	if (! valid_swig_cb(handler, event_cb))				 	    rv = EINVAL;						 	else {								 	    handler_val = get_swig_cb(handler, event_cb);			 	    rv = ipmi_domain_remove_event_handler		 		 (self, domain_event_handler, handler_val);	 	    if (!rv)							 		deref_swig_cb_val(handler_val);				 	}								 	IPMI_SWIG_C_CB_EXIT						 	return rv;;
    }
SWIGINTERN ipmi_event_t *ipmi_domain_t_first_event(ipmi_domain_t *self){
	return ipmi_domain_first_event(self);
    }
SWIGINTERN ipmi_event_t *ipmi_domain_t_last_event(ipmi_domain_t *self){
	return ipmi_domain_last_event(self);
    }
SWIGINTERN ipmi_event_t *ipmi_domain_t_next_event(ipmi_domain_t *self,ipmi_event_t *event){
	return ipmi_domain_next_event(self, event);
    }
SWIGINTERN ipmi_event_t *ipmi_domain_t_prev_event(ipmi_domain_t *self,ipmi_event_t *event){
	return ipmi_domain_prev_event(self, event);
    }
SWIGINTERN int ipmi_domain_t_sel_count(ipmi_domain_t *self){
	int          rv;
	unsigned int count;
	rv = ipmi_domain_sel_count(self, &count);
	if (rv)
	    return 0;
	else
	    return count;
    }
SWIGINTERN int ipmi_domain_t_sel_entries_used(ipmi_domain_t *self){
	int          rv;
	unsigned int count;
	rv = ipmi_domain_sel_entries_used(self, &count);
	if (rv)
	    return 0;
	else
	    return count;
    }
SWIGINTERN int ipmi_domain_t_reread_sels(ipmi_domain_t *self,swig_cb *handler){
	int            rv;
	swig_cb_val    *handler_val = NULL;
	ipmi_domain_cb domain_cb = NULL;

	IPMI_SWIG_C_CB_ENTRY
	if (!nil_swig_cb(handler)) {
	    if (!valid_swig_cb(handler, domain_reread_sels_cb)) {
		rv = EINVAL;
		goto out_err;
	    }
	    domain_cb = domain_reread_sels_handler;
	    handler_val = ref_swig_cb(handler, domain_reread_sels_cb);
	}
	rv = ipmi_domain_reread_sels(self, domain_cb, handler_val);
	if (rv && handler_val)
	    deref_swig_cb_val(handler_val);
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN ipmi_fru_t *ipmi_domain_t_fru_alloc(ipmi_domain_t *self,int is_logical,int device_address,int device_id,int lun,int private_bus,int channel,swig_cb *handler){
	ipmi_fru_t *fru = NULL;
	int         rv;
	swig_cb_val *handler_val = NULL;
	ipmi_fru_cb cb_handler = NULL;

	IPMI_SWIG_C_CB_ENTRY
	if (!nil_swig_cb(handler)) {
	    if (!valid_swig_cb(handler, fru_fetched))
		goto out_err;
	    cb_handler = fru_fetched;
	    handler_val = ref_swig_cb(handler, fru_fetched);
	}

	rv = ipmi_domain_fru_alloc(self, is_logical, device_address, device_id,
				   lun, private_bus, channel, cb_handler,
				   handler_val, &fru);
	if (rv) {
	    if (handler_val)
		deref_swig_cb_val(handler_val);
	    fru = NULL;
	} else {
	    /* We have one ref for the callback already, add a ref for
	       the returned value. */
	    if (handler_val)
		ipmi_fru_ref(fru);
	}

    out_err:
	IPMI_SWIG_C_CB_EXIT
	return fru;
    }
SWIGINTERN ipmi_pet_t *ipmi_domain_t_get_pet(ipmi_domain_t *self,int connection,int channel,char *ip_addr,char *mac_addr,int eft_sel,int policy_num,int apt_sel,int lan_dest_sel,swig_cb *handler){
	int              rv;
	ipmi_pet_t       *pet = NULL;
	swig_cb_val      *handler_val = NULL;
	struct in_addr   ip;
	unsigned char    mac[6];
	ipmi_pet_done_cb done = NULL;

	IPMI_SWIG_C_CB_ENTRY
        rv = parse_ip_addr(ip_addr, &ip);
	if (rv)
	    goto out_err;

        rv = parse_mac_addr(mac_addr, mac);
	if (rv)
	    goto out_err;

	if (!nil_swig_cb(handler)) {
	    if (!valid_swig_cb(handler, got_pet_cb))
		goto out_err;
	    handler_val = ref_swig_cb(handler, got_pet_cb);
	    done = get_pet;
	}
	rv = ipmi_pet_create(self, connection, channel, ip, mac, eft_sel,
			     policy_num, apt_sel, lan_dest_sel, get_pet,
			     handler_val, &pet);
	if (rv && handler_val)
	    deref_swig_cb_val(handler_val);
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return pet;
    }
SWIGINTERN ipmi_sol_conn_t *ipmi_domain_t_create_sol(ipmi_domain_t *self,int connection,swig_cb *handler){
	ipmi_con_t      *con;
	ipmi_sol_conn_t *scon;
	int             rv;
	swig_cb_val     *handler_val;

	if (nil_swig_cb(handler))
	    return NULL;

	if (!valid_swig_cb(handler, sol_connection_state_change))
	    return NULL;
	if (!valid_swig_cb(handler, sol_data_received))
	    return NULL;
	if (!valid_swig_cb(handler, sol_break_detected))
	    return NULL;
	if (!valid_swig_cb(handler, sol_bmc_transmit_overrun))
	    return NULL;

	con = ipmi_domain_get_connection(self, connection);
	if (!con)
	    return NULL;

	rv = ipmi_sol_create(con, &scon);
	if (rv) {
	    con->close_connection(con);
	    return NULL;
	}

	handler_val = ref_swig_gencb(handler);

	rv = ipmi_sol_register_connection_state_callback
	    (scon,
	     sol_connection_state_change_cb,
	     handler_val);
	if (rv)
	    goto out_err;

	rv = ipmi_sol_register_data_received_callback
	    (scon,
	     sol_data_received_cb,
	     handler_val);
	if (rv)
	    goto out_err;

	rv = ipmi_sol_register_break_detected_callback
	    (scon,
	     sol_break_detected_cb,
	     handler_val);
	if (rv)
	    goto out_err;

	rv = ipmi_sol_register_bmc_transmit_overrun_callback
	    (scon,
	     sol_bmc_transmit_overrun_cb,
	     handler_val);
	if (rv)
	    goto out_err;

	return scon;

    out_err:
	deref_swig_cb_val(handler_val);
	ipmi_sol_free(scon);
	return NULL;
    }
SWIGINTERN void delete_ipmi_domain_id_t(ipmi_domain_id_t *self){
	free(self);
    }
SWIGINTERN int ipmi_domain_id_t_cmp(ipmi_domain_id_t *self,ipmi_domain_id_t *other){
	return ipmi_cmp_domain_id(*self, *other);
    }
SWIGINTERN int ipmi_domain_id_t_to_domain(ipmi_domain_id_t *self,swig_cb *handler){
	int rv;
	IPMI_SWIG_C_CB_ENTRY
	if (! valid_swig_cb(handler, domain_cb))
	    rv = EINVAL;
	else
	    rv = ipmi_domain_pointer_cb(*self, handle_domain_cb,
					get_swig_cb(handler, domain_cb));
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN void delete_ipmi_args_t(ipmi_args_t *self){
	ipmi_free_args(self);
    }
SWIGINTERN char const *ipmi_args_t_get_type(ipmi_args_t *self){
	return ipmi_args_get_type(self);
    }
SWIGINTERN int ipmi_args_t_get_val(ipmi_args_t *self,int argnum,char const **name,char const **type,char const **help,char **value,strconstarray *range){
	int        rv;
	const char **irange = NULL;
	char       *ivalue = NULL;

	rv = ipmi_args_get_val(self, argnum, name, type, help,
			       &ivalue, &irange);
	if (rv)
	    return rv;
	if (ivalue) {
	    /* Convert it to a normal malloc() so char ** will work. */
	    char *ivalue2 = strdup(ivalue);
	    ipmi_args_free_str(self, ivalue);
	    ivalue = ivalue2;
	}
	*value = ivalue;
	if (irange) {
	    int len;
	    for (len=0; irange[len]; len++)
		;
	    range->len = len;
	    range->val = irange;
	}
	return 0;
    }
SWIGINTERN int ipmi_args_t_set_val(ipmi_args_t *self,int argnum,char const *name,char const *value){
	return ipmi_args_set_val(self, argnum, name, value);
    }
SWIGINTERN ipmi_domain_t *ipmi_entity_t_get_domain(ipmi_entity_t *self){
	return ipmi_entity_get_domain(self);
    }
SWIGINTERN char *ipmi_entity_t_get_name(ipmi_entity_t *self){
	char name[IPMI_ENTITY_NAME_LEN];

	ipmi_entity_get_name(self, name, sizeof(name));
	return strdup(name);
    }
SWIGINTERN ipmi_entity_id_t *ipmi_entity_t_get_id(ipmi_entity_t *self){
	ipmi_entity_id_t *rv = malloc(sizeof(*rv));
	if (rv)
	    *rv = ipmi_entity_convert_to_id(self);
	return rv;
    }
SWIGINTERN int ipmi_entity_t_iterate_children(ipmi_entity_t *self,swig_cb *handler){
	swig_cb_val *handler_val;
	int         rv = 0;

	IPMI_SWIG_C_CB_ENTRY
	if (! valid_swig_cb(handler, entity_iter_entities_cb))
	    rv = EINVAL;
	else {
	    handler_val = get_swig_cb(handler, entity_iter_entities_cb);
	    ipmi_entity_iterate_children(self, entity_iterate_entities_handler,
					 handler_val);
	}
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_entity_t_iterate_parents(ipmi_entity_t *self,swig_cb *handler){
	swig_cb_val *handler_val;
	int         rv = 0;

	IPMI_SWIG_C_CB_ENTRY
	if (! valid_swig_cb(handler, entity_iter_entities_cb))
	    rv = EINVAL;
	else {
	    handler_val = get_swig_cb(handler, entity_iter_entities_cb);
	    ipmi_entity_iterate_parents(self, entity_iterate_entities_handler,
					handler_val);
	}
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_entity_t_iterate_sensors(ipmi_entity_t *self,swig_cb *handler){
	swig_cb_val *handler_val;
	int         rv = 0;

	IPMI_SWIG_C_CB_ENTRY
	if (! valid_swig_cb(handler, entity_iter_sensors_cb))
	    rv = EINVAL;
	else {
	    handler_val = get_swig_cb(handler, entity_iter_sensors_cb);
	    ipmi_entity_iterate_sensors(self, entity_iterate_sensors_handler,
					handler_val);
	}
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_entity_t_iterate_controls(ipmi_entity_t *self,swig_cb *handler){
	swig_cb_val *handler_val;
	int         rv = 0;

	IPMI_SWIG_C_CB_ENTRY
	if (! valid_swig_cb(handler, entity_iter_controls_cb))
	    rv = EINVAL;
	else {
	    handler_val = get_swig_cb(handler, entity_iter_controls_cb);
	    ipmi_entity_iterate_controls(self, entity_iterate_controls_handler,
					 handler_val);
	}
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_entity_t_add_presence_handler(ipmi_entity_t *self,swig_cb *handler){
	ipmi_entity_add_presence_handler_cl
	    (self, entity_presence_handler_cl, NULL);
	 	int         rv;							 	swig_cb_val *handler_val;					 	IPMI_SWIG_C_CB_ENTRY						 	if (! valid_swig_cb(handler, entity_presence_cb))				 	    rv = EINVAL;						 	else {								 	    handler_val = ref_swig_cb(handler, entity_presence_cb);			 	    rv = ipmi_entity_add_presence_handler		 		 (self, entity_presence_handler, handler_val);	 	    if (rv)							 		deref_swig_cb_val(handler_val);				 	}								 	IPMI_SWIG_C_CB_EXIT						 	return rv;;
    }
SWIGINTERN int ipmi_entity_t_remove_presence_handler(ipmi_entity_t *self,swig_cb *handler){
	 	int         rv;							 	swig_cb_val *handler_val;					 	IPMI_SWIG_C_CB_ENTRY						 	if (! valid_swig_cb(handler, entity_presence_cb))				 	    rv = EINVAL;						 	else {								 	    handler_val = get_swig_cb(handler, entity_presence_cb);			 	    rv = ipmi_entity_remove_presence_handler		 		 (self, entity_presence_handler, handler_val);	 	    if (!rv)							 		deref_swig_cb_val(handler_val);				 	}								 	IPMI_SWIG_C_CB_EXIT						 	return rv;;
    }
SWIGINTERN int ipmi_entity_t_add_sensor_update_handler(ipmi_entity_t *self,swig_cb *handler){
	ipmi_entity_add_sensor_update_handler_cl
	    (self, entity_sensor_update_handler_cl, NULL);
	 	int         rv;							 	swig_cb_val *handler_val;					 	IPMI_SWIG_C_CB_ENTRY						 	if (! valid_swig_cb(handler, entity_sensor_update_cb))				 	    rv = EINVAL;						 	else {								 	    handler_val = ref_swig_cb(handler, entity_sensor_update_cb);			 	    rv = ipmi_entity_add_sensor_update_handler		 		 (self, entity_sensor_update_handler, handler_val);	 	    if (rv)							 		deref_swig_cb_val(handler_val);				 	}								 	IPMI_SWIG_C_CB_EXIT						 	return rv;;
    }
SWIGINTERN int ipmi_entity_t_remove_sensor_update_handler(ipmi_entity_t *self,swig_cb *handler){
	 	int         rv;							 	swig_cb_val *handler_val;					 	IPMI_SWIG_C_CB_ENTRY						 	if (! valid_swig_cb(handler, entity_sensor_update_cb))				 	    rv = EINVAL;						 	else {								 	    handler_val = get_swig_cb(handler, entity_sensor_update_cb);			 	    rv = ipmi_entity_remove_sensor_update_handler		 		 (self, entity_sensor_update_handler, handler_val);	 	    if (!rv)							 		deref_swig_cb_val(handler_val);				 	}								 	IPMI_SWIG_C_CB_EXIT						 	return rv;;
    }
SWIGINTERN int ipmi_entity_t_add_control_update_handler(ipmi_entity_t *self,swig_cb *handler){
	ipmi_entity_add_control_update_handler_cl
	    (self, entity_control_update_handler_cl, NULL);
	 	int         rv;							 	swig_cb_val *handler_val;					 	IPMI_SWIG_C_CB_ENTRY						 	if (! valid_swig_cb(handler, entity_control_update_cb))				 	    rv = EINVAL;						 	else {								 	    handler_val = ref_swig_cb(handler, entity_control_update_cb);			 	    rv = ipmi_entity_add_control_update_handler		 		 (self, entity_control_update_handler, handler_val);	 	    if (rv)							 		deref_swig_cb_val(handler_val);				 	}								 	IPMI_SWIG_C_CB_EXIT						 	return rv;;
    }
SWIGINTERN int ipmi_entity_t_remove_control_update_handler(ipmi_entity_t *self,swig_cb *handler){
	 	int         rv;							 	swig_cb_val *handler_val;					 	IPMI_SWIG_C_CB_ENTRY						 	if (! valid_swig_cb(handler, entity_control_update_cb))				 	    rv = EINVAL;						 	else {								 	    handler_val = get_swig_cb(handler, entity_control_update_cb);			 	    rv = ipmi_entity_remove_control_update_handler		 		 (self, entity_control_update_handler, handler_val);	 	    if (!rv)							 		deref_swig_cb_val(handler_val);				 	}								 	IPMI_SWIG_C_CB_EXIT						 	return rv;;
    }
SWIGINTERN int ipmi_entity_t_add_fru_update_handler(ipmi_entity_t *self,swig_cb *handler){
	ipmi_entity_add_fru_update_handler_cl
	    (self, entity_fru_update_handler_cl, NULL);
	 	int         rv;							 	swig_cb_val *handler_val;					 	IPMI_SWIG_C_CB_ENTRY						 	if (! valid_swig_cb(handler, entity_fru_update_cb))				 	    rv = EINVAL;						 	else {								 	    handler_val = ref_swig_cb(handler, entity_fru_update_cb);			 	    rv = ipmi_entity_add_fru_update_handler		 		 (self, entity_fru_update_handler, handler_val);	 	    if (rv)							 		deref_swig_cb_val(handler_val);				 	}								 	IPMI_SWIG_C_CB_EXIT						 	return rv;;
    }
SWIGINTERN int ipmi_entity_t_remove_fru_update_handler(ipmi_entity_t *self,swig_cb *handler){
	 	int         rv;							 	swig_cb_val *handler_val;					 	IPMI_SWIG_C_CB_ENTRY						 	if (! valid_swig_cb(handler, entity_fru_update_cb))				 	    rv = EINVAL;						 	else {								 	    handler_val = get_swig_cb(handler, entity_fru_update_cb);			 	    rv = ipmi_entity_remove_fru_update_handler		 		 (self, entity_fru_update_handler, handler_val);	 	    if (!rv)							 		deref_swig_cb_val(handler_val);				 	}								 	IPMI_SWIG_C_CB_EXIT						 	return rv;;
    }
SWIGINTERN int ipmi_entity_t_add_fru_update_werr_handler(ipmi_entity_t *self,swig_cb *handler){
	ipmi_entity_add_fru_update_werr_handler_cl
	    (self, entity_fru_update_werr_handler_cl, NULL);
	 	int         rv;							 	swig_cb_val *handler_val;					 	IPMI_SWIG_C_CB_ENTRY						 	if (! valid_swig_cb(handler, entity_fru_update_werr_cb))				 	    rv = EINVAL;						 	else {								 	    handler_val = ref_swig_cb(handler, entity_fru_update_werr_cb);			 	    rv = ipmi_entity_add_fru_update_werr_handler		 		 (self, entity_fru_update_werr_handler, handler_val);	 	    if (rv)							 		deref_swig_cb_val(handler_val);				 	}								 	IPMI_SWIG_C_CB_EXIT						 	return rv;;
    }
SWIGINTERN int ipmi_entity_t_remove_fru_update_werr_handler(ipmi_entity_t *self,swig_cb *handler){
	 	int         rv;							 	swig_cb_val *handler_val;					 	IPMI_SWIG_C_CB_ENTRY						 	if (! valid_swig_cb(handler, entity_fru_update_werr_cb))				 	    rv = EINVAL;						 	else {								 	    handler_val = get_swig_cb(handler, entity_fru_update_werr_cb);			 	    rv = ipmi_entity_remove_fru_update_werr_handler		 		 (self, entity_fru_update_werr_handler, handler_val);	 	    if (!rv)							 		deref_swig_cb_val(handler_val);				 	}								 	IPMI_SWIG_C_CB_EXIT						 	return rv;;
    }
SWIGINTERN char *ipmi_entity_t_get_type(ipmi_entity_t *self){
	switch (ipmi_entity_get_type(self)) {
	case IPMI_ENTITY_MC: return "mc";
	case IPMI_ENTITY_FRU: return "fru";
	case IPMI_ENTITY_GENERIC: return "generic";
	default: return "unknown";
	}
    }
SWIGINTERN int ipmi_entity_t_is_fru(ipmi_entity_t *self){
	return ipmi_entity_get_is_fru(self);
    }
SWIGINTERN char *ipmi_entity_t_get_id_string(ipmi_entity_t *self){
	int length = ipmi_entity_get_id_length(self);
	char *str;
	if (length < 2)
	    return NULL;
	str = malloc(length);
	if (!str)
	    return NULL;
	ipmi_entity_get_id(self, str, length);
	return str;
    }
SWIGINTERN int ipmi_entity_t_get_entity_id(ipmi_entity_t *self){
	return ipmi_entity_get_entity_id(self);
    }
SWIGINTERN char const *ipmi_entity_t_get_entity_id_string(ipmi_entity_t *self){
	return ipmi_entity_get_entity_id_string(self);
    }
SWIGINTERN int ipmi_entity_t_get_entity_instance(ipmi_entity_t *self){
	return ipmi_entity_get_entity_instance(self);
    }
SWIGINTERN int ipmi_entity_t_get_entity_device_channel(ipmi_entity_t *self){
	return ipmi_entity_get_device_channel(self);
    }
SWIGINTERN int ipmi_entity_t_get_entity_device_address(ipmi_entity_t *self){
	return ipmi_entity_get_device_address(self);
    }
SWIGINTERN ipmi_fru_t *ipmi_entity_t_get_fru(ipmi_entity_t *self){
	ipmi_fru_t *fru = ipmi_entity_get_fru(self);
	if (fru)
	    ipmi_fru_ref(fru);
	return fru;
    }
SWIGINTERN int ipmi_entity_t_get_presence_sensor_always_there(ipmi_entity_t *self){
	return ipmi_entity_get_presence_sensor_always_there(self);
    }
SWIGINTERN int ipmi_entity_t_is_child(ipmi_entity_t *self){
	return ipmi_entity_get_is_child(self);
    }
SWIGINTERN int ipmi_entity_t_is_parent(ipmi_entity_t *self){
	return ipmi_entity_get_is_parent(self);
    }
SWIGINTERN int ipmi_entity_t_get_channel(ipmi_entity_t *self){
	return ipmi_entity_get_channel(self);
    }
SWIGINTERN int ipmi_entity_t_get_lun(ipmi_entity_t *self){
	return ipmi_entity_get_lun(self);
    }
SWIGINTERN int ipmi_entity_t_get_oem(ipmi_entity_t *self){
	return ipmi_entity_get_oem(self);
    }
SWIGINTERN int ipmi_entity_t_get_access_address(ipmi_entity_t *self){
	return ipmi_entity_get_access_address(self);
    }
SWIGINTERN int ipmi_entity_t_get_private_bus_id(ipmi_entity_t *self){
	return ipmi_entity_get_private_bus_id(self);
    }
SWIGINTERN int ipmi_entity_t_get_device_type(ipmi_entity_t *self){
	return ipmi_entity_get_device_type(self);
    }
SWIGINTERN int ipmi_entity_t_get_device_modifier(ipmi_entity_t *self){
	return ipmi_entity_get_device_modifier(self);
    }
SWIGINTERN int ipmi_entity_t_get_slave_address(ipmi_entity_t *self){
	return ipmi_entity_get_slave_address(self);
    }
SWIGINTERN ipmi_mcid_t *ipmi_entity_t_get_mc_id(ipmi_entity_t *self){
	ipmi_mcid_t *mc_id = malloc(sizeof(*mc_id));
	int rv;
	rv = ipmi_entity_get_mc_id(self, mc_id);
	if (rv) {
	    free(mc_id);
	    mc_id = NULL;
	}
	return mc_id;
    }
SWIGINTERN int ipmi_entity_t_get_is_logical_fru(ipmi_entity_t *self){
	return ipmi_entity_get_is_logical_fru(self);
    }
SWIGINTERN int ipmi_entity_t_get_fru_device_id(ipmi_entity_t *self){
	return ipmi_entity_get_fru_device_id(self);
    }
SWIGINTERN int ipmi_entity_t_get_ACPI_system_power_notify_required(ipmi_entity_t *self){
	return ipmi_entity_get_ACPI_system_power_notify_required(self);
    }
SWIGINTERN int ipmi_entity_t_get_ACPI_device_power_notify_required(ipmi_entity_t *self){
	return ipmi_entity_get_ACPI_device_power_notify_required(self);
    }
SWIGINTERN int ipmi_entity_t_get_controller_logs_init_agent_errors(ipmi_entity_t *self){
	return ipmi_entity_get_controller_logs_init_agent_errors(self);
    }
SWIGINTERN int ipmi_entity_t_get_log_init_agent_errors_accessing(ipmi_entity_t *self){
	return ipmi_entity_get_log_init_agent_errors_accessing(self);
    }
SWIGINTERN int ipmi_entity_t_get_global_init(ipmi_entity_t *self){
	return ipmi_entity_get_global_init(self);
    }
SWIGINTERN int ipmi_entity_t_get_chassis_device(ipmi_entity_t *self){
	return ipmi_entity_get_chassis_device(self);
    }
SWIGINTERN int ipmi_entity_t_get_bridge(ipmi_entity_t *self){
	return ipmi_entity_get_bridge(self);
    }
SWIGINTERN int ipmi_entity_t_get_IPMB_event_generator(ipmi_entity_t *self){
	return ipmi_entity_get_IPMB_event_generator(self);
    }
SWIGINTERN int ipmi_entity_t_get_IPMB_event_receiver(ipmi_entity_t *self){
	return ipmi_entity_get_IPMB_event_receiver(self);
    }
SWIGINTERN int ipmi_entity_t_get_FRU_inventory_device(ipmi_entity_t *self){
	return ipmi_entity_get_FRU_inventory_device(self);
    }
SWIGINTERN int ipmi_entity_t_get_SEL_device(ipmi_entity_t *self){
	return ipmi_entity_get_SEL_device(self);
    }
SWIGINTERN int ipmi_entity_t_get_SDR_repository_device(ipmi_entity_t *self){
	return ipmi_entity_get_SDR_repository_device(self);
    }
SWIGINTERN int ipmi_entity_t_get_sensor_device(ipmi_entity_t *self){
	return ipmi_entity_get_sensor_device(self);
    }
SWIGINTERN int ipmi_entity_t_get_address_span(ipmi_entity_t *self){
	return ipmi_entity_get_address_span(self);
    }
SWIGINTERN char *ipmi_entity_t_get_dlr_id(ipmi_entity_t *self){
	/* FIXME - no unicode handling. */
	int len = ipmi_entity_get_id_length(self) + 1;
	char *id = malloc(len);
	ipmi_entity_get_id(self, id, len);
	return id;
    }
SWIGINTERN int ipmi_entity_t_is_present(ipmi_entity_t *self){
	return ipmi_entity_is_present(self);
    }
SWIGINTERN int ipmi_entity_t_get_physical_slot_num(ipmi_entity_t *self){
	unsigned int num;
	if (ipmi_entity_get_physical_slot_num(self, &num) == 0)
	    return num;
	else
	    return -1;
    }
SWIGINTERN int ipmi_entity_t_is_hot_swappable(ipmi_entity_t *self){
	return ipmi_entity_hot_swappable(self);
    }
SWIGINTERN int ipmi_entity_t_supports_managed_hot_swap(ipmi_entity_t *self){
	return ipmi_entity_supports_managed_hot_swap(self);
    }
SWIGINTERN int ipmi_entity_t_add_hot_swap_handler(ipmi_entity_t *self,swig_cb *handler){
	ipmi_entity_add_hot_swap_handler_cl
	    (self, entity_hot_swap_handler_cl, NULL);
	 	int         rv;							 	swig_cb_val *handler_val;					 	IPMI_SWIG_C_CB_ENTRY						 	if (! valid_swig_cb(handler, entity_hot_swap_update_cb))				 	    rv = EINVAL;						 	else {								 	    handler_val = ref_swig_cb(handler, entity_hot_swap_update_cb);			 	    rv = ipmi_entity_add_hot_swap_handler		 		 (self, entity_hot_swap_handler, handler_val);	 	    if (rv)							 		deref_swig_cb_val(handler_val);				 	}								 	IPMI_SWIG_C_CB_EXIT						 	return rv;;
    }
SWIGINTERN int ipmi_entity_t_remove_hot_swap_handler(ipmi_entity_t *self,swig_cb *handler){
	 	int         rv;							 	swig_cb_val *handler_val;					 	IPMI_SWIG_C_CB_ENTRY						 	if (! valid_swig_cb(handler, entity_hot_swap_update_cb))				 	    rv = EINVAL;						 	else {								 	    handler_val = get_swig_cb(handler, entity_hot_swap_update_cb);			 	    rv = ipmi_entity_remove_hot_swap_handler		 		 (self, entity_hot_swap_handler, handler_val);	 	    if (!rv)							 		deref_swig_cb_val(handler_val);				 	}								 	IPMI_SWIG_C_CB_EXIT						 	return rv;;
    }
SWIGINTERN int ipmi_entity_t_get_hot_swap_state(ipmi_entity_t *self,swig_cb *handler){
	swig_cb_val *handler_val;
	int         rv;

	IPMI_SWIG_C_CB_ENTRY
	if (! valid_swig_cb(handler, entity_hot_swap_cb))
	    rv = EINVAL;
	else {
	    handler_val = ref_swig_cb(handler, entity_hot_swap_cb);
	    rv = ipmi_entity_get_hot_swap_state(self,
						entity_get_hot_swap_handler,
						handler_val);
	    if (rv)
		deref_swig_cb_val(handler_val);
	}
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_entity_t_supports_auto_activate_time(ipmi_entity_t *self){
	return ipmi_entity_supports_auto_activate_time(self);
    }
SWIGINTERN int ipmi_entity_t_get_auto_activate_time(ipmi_entity_t *self,swig_cb *handler){
	swig_cb_val *handler_val;
	int         rv;

	IPMI_SWIG_C_CB_ENTRY
	if (! valid_swig_cb(handler, entity_hot_swap_get_time_cb))
	    rv = EINVAL;
	else {
	    handler_val = ref_swig_cb(handler, entity_hot_swap_get_time_cb);
	    rv = ipmi_entity_get_auto_activate_time
		(self,
		 entity_get_hot_swap_time_handler,
		 handler_val);
	    if (rv)
		deref_swig_cb_val(handler_val);
	}
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_entity_t_set_auto_activate_time(ipmi_entity_t *self,ipmi_timeout_t auto_act,swig_cb *handler){
	swig_cb_val    *handler_val = NULL;
	ipmi_entity_cb done = NULL;
	int            rv;

	IPMI_SWIG_C_CB_ENTRY
	if (!nil_swig_cb(handler)) {
	    if (!valid_swig_cb(handler, entity_hot_swap_set_time_cb)) {
		rv = EINVAL;
		goto out_err;
	    }
	    handler_val = ref_swig_cb(handler, entity_hot_swap_set_time_cb);
	    done = entity_set_hot_swap_time_handler;
	}
	rv = ipmi_entity_set_auto_activate_time
	    (self, auto_act, done, handler_val);
	if (rv && handler_val)
	    deref_swig_cb_val(handler_val);
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_entity_t_supports_auto_deactivate_time(ipmi_entity_t *self){
	return ipmi_entity_supports_auto_deactivate_time(self);
    }
SWIGINTERN int ipmi_entity_t_get_auto_deactivate_time(ipmi_entity_t *self,swig_cb *handler){
	swig_cb_val *handler_val;
	int         rv;

	IPMI_SWIG_C_CB_ENTRY
	if (! valid_swig_cb(handler, entity_hot_swap_get_time_cb))
	    rv = EINVAL;
	else {
	    handler_val = ref_swig_cb(handler, entity_hot_swap_get_time_cb);
	    rv = ipmi_entity_get_auto_deactivate_time
		(self,
		 entity_get_hot_swap_time_handler,
		 handler_val);
	    if (rv)
		deref_swig_cb_val(handler_val);
	}
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_entity_t_set_auto_deactivate_time(ipmi_entity_t *self,ipmi_timeout_t auto_act,swig_cb *handler){
	swig_cb_val    *handler_val = NULL;
	ipmi_entity_cb done = NULL;
	int            rv;

	IPMI_SWIG_C_CB_ENTRY
	if (!nil_swig_cb(handler)) {
	    if (!valid_swig_cb(handler, entity_hot_swap_set_time_cb)) {
		rv = EINVAL;
		goto out_err;
	    }
	    handler_val = ref_swig_cb(handler, entity_hot_swap_set_time_cb);
	    done = entity_set_hot_swap_time_handler;
	}
	rv = ipmi_entity_set_auto_deactivate_time
	    (self, auto_act, done, handler_val);
	if (rv && handler_val)
	    deref_swig_cb_val(handler_val);
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_entity_t_set_activation_requested(ipmi_entity_t *self,swig_cb *handler){
	swig_cb_val    *handler_val = NULL;
	ipmi_entity_cb done = NULL;
	int            rv;

	IPMI_SWIG_C_CB_ENTRY
	if (!nil_swig_cb(handler)) {
	    if (! valid_swig_cb(handler, entity_activate_cb)) {
		rv = EINVAL;
		goto out_err;
	    }
	    handler_val = ref_swig_cb(handler, entity_activate_cb);
	    done = entity_activate_handler;
	}
	rv = ipmi_entity_set_activation_requested(self, done, handler_val);
	if (rv && handler_val)
	    deref_swig_cb_val(handler_val);
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_entity_t_activate(ipmi_entity_t *self,swig_cb *handler){
	swig_cb_val    *handler_val = NULL;
	ipmi_entity_cb done = NULL;
	int            rv;

	IPMI_SWIG_C_CB_ENTRY
	if (!nil_swig_cb(handler)) {
	    if (! valid_swig_cb(handler, entity_activate_cb)) {
		rv = EINVAL;
		goto out_err;
	    }
	    handler_val = ref_swig_cb(handler, entity_activate_cb);
	    done = entity_activate_handler;
	}
	rv = ipmi_entity_activate(self, done, handler_val);
	if (rv && handler_val)
	    deref_swig_cb_val(handler_val);
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_entity_t_deactivate(ipmi_entity_t *self,swig_cb *handler){
	swig_cb_val    *handler_val = NULL;
	ipmi_entity_cb done = NULL;
	int            rv;

	IPMI_SWIG_C_CB_ENTRY
	if (!nil_swig_cb(handler)) {
	    if (! valid_swig_cb(handler, entity_activate_cb)) {
		rv = EINVAL;
		goto out_err;
	    }
	    handler_val = ref_swig_cb(handler, entity_activate_cb);
	    done = entity_activate_handler;
	}
	rv = ipmi_entity_deactivate(self, done, handler_val);
	if (rv && handler_val)
	    deref_swig_cb_val(handler_val);
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_entity_t_check_hot_swap_state(ipmi_entity_t *self){
	return ipmi_entity_check_hot_swap_state(self);
    }
SWIGINTERN void delete_ipmi_entity_id_t(ipmi_entity_id_t *self){
	free(self);
    }
SWIGINTERN int ipmi_entity_id_t_cmp(ipmi_entity_id_t *self,ipmi_entity_id_t *other){
	return ipmi_cmp_entity_id(*self, *other);
    }
SWIGINTERN int ipmi_entity_id_t_to_entity(ipmi_entity_id_t *self,swig_cb *handler){
	int rv;

	IPMI_SWIG_C_CB_ENTRY
	if (! valid_swig_cb(handler, entity_cb))
	    rv = EINVAL;
	else
	    rv = ipmi_entity_pointer_cb(*self, handle_entity_cb,
					get_swig_cb(handler, entity_cb));
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN void delete_ipmi_fru_t(ipmi_fru_t *self){
	ipmi_fru_deref(self);
    }
SWIGINTERN ipmi_domain_id_t *ipmi_fru_t_get_domain_id(ipmi_fru_t *self){
	ipmi_domain_id_t *rv = malloc(sizeof(*rv));
	if (rv)
	    *rv = ipmi_fru_get_domain_id(self);
	return rv;
    }
SWIGINTERN int ipmi_fru_t_str_to_index(ipmi_fru_t *self,char *name){
	return ipmi_fru_str_to_index(name);
    }
SWIGINTERN char *ipmi_fru_t_get(ipmi_fru_t *self,int index,int *num){
	const char                *name;
	enum ipmi_fru_data_type_e dtype;
	int                       intval;
	time_t                    time;
	char                      *data;
	unsigned int              data_len;
	int                       rv;
	char                      dummy[1];
	char                      *str = NULL, *s;
	int                       len;
	int                       i;

	data = NULL;
	rv = ipmi_fru_get(self, index, &name, num, &dtype, &intval,
			  &time, &data, &data_len);
	if ((rv == ENOSYS) || (rv == E2BIG))
	    return strdup(name);
	else if (rv)
	    return NULL;

	switch(dtype) {
	case IPMI_FRU_DATA_INT:
	    len = snprintf(dummy, 1, "%s integer %d", name, intval);
	    str = malloc(len + 1);
	    sprintf(str, "%s integer %d", name, intval);
	    break;

	case IPMI_FRU_DATA_TIME:
	    len = snprintf(dummy, 1, "%s time %ld", name, (long) time);
	    str = malloc(len + 1);
	    sprintf(str, "%s time %ld", name, (long) time);
	    break;

	case IPMI_FRU_DATA_BINARY:
	    len = snprintf(dummy, 1, "%s binary", name);
	    len += data_len * 5;
	    str = malloc(len + 1);
	    s = str;
	    s += sprintf(s, "%s binary", name);
	    for (i=0; i<data_len; i++)
		s += sprintf(s, " 0x%2.2x", (unsigned char) data[i]);
	    break;

	case IPMI_FRU_DATA_UNICODE:
	    len = snprintf(dummy, 1, "%s unicode", name);
	    len += data_len * 5;
	    str = malloc(len + 1);
	    s = str;
	    s += sprintf(s, "%s unicode", name);
	    for (i=0; i<data_len; i++)
		s += sprintf(s, " 0x%2.2x", (unsigned char) data[i]);
	    break;

	case IPMI_FRU_DATA_ASCII:
	    len = snprintf(dummy, 1, "%s ascii %s", name, data);
	    str = malloc(len + 1);
	    sprintf(str, "%s ascii %s", name, data);
	    break;

	default:
	    str = NULL;
	}

	if (data)
	    ipmi_fru_data_free(data);

	return str;
    }
SWIGINTERN int ipmi_fru_t_get_num_multi_records(ipmi_fru_t *self){
	return ipmi_fru_get_num_multi_records(self);
    }
SWIGINTERN char *ipmi_fru_t_get_multirecord(ipmi_fru_t *self,int num){
	unsigned char type;
	unsigned char version;
	unsigned int length;
	unsigned char *data;
	int           rv;
	char          dummy[1];
	char          *str, *s;
	int           str_len;
	int           i;

	rv = ipmi_fru_get_multi_record_type(self, num, &type);
	if (rv)
	    return NULL;
	rv = ipmi_fru_get_multi_record_format_version(self, num, &version);
	if (rv)
	    return NULL;
	rv = ipmi_fru_get_multi_record_data_len(self, num, &length);
	if (rv)
	    return NULL;
	if (length == 0)
	    data = malloc(1);
	else
	    data = malloc(length);
	if (!data)
	    return NULL;
	rv = ipmi_fru_get_multi_record_data(self, num, data, &length);
	if (rv) {
	    free(data);
	    return NULL;
	}

	str_len = snprintf(dummy, 1, "%d %d", type, version);
	str_len += length * 5;
	str = malloc(str_len + 1);
	if (!str) {
	    free(data);
	    return NULL;
	}

	s = str;
	s += sprintf(s, "%d %d", type, version);
	for (i=0; i<length; i++)
	    s += sprintf(s, " 0x%2.2x", data[i]);
	free(data);
	return str;
    }
SWIGINTERN int ipmi_fru_t_set(ipmi_fru_t *self,int index,int num,char *type,char *value){
	if (!type)
	    return EINVAL;
	if (strcmp(type, "integer") == 0) {
	    unsigned int val;
	    char         *endstr;
	    if (!value)
		return EINVAL;
	    if (*value == '\0')
		return EINVAL;
	    val = strtol(value, &endstr, 0);
	    if (*endstr != '\0')
		return EINVAL;
	    return ipmi_fru_set_int_val(self, index, num, val);
	} else if (strcmp(type, "time") == 0) {
	    unsigned int val;
	    char         *endstr;
	    if (!value)
		return EINVAL;
	    if (*value == '\0')
		return EINVAL;
	    val = strtol(value, &endstr, 0);
	    if (*endstr != '\0')
		return EINVAL;
	    return ipmi_fru_set_time_val(self, index, num, val);
	} else if (strcmp(type, "binary") == 0) {
	    unsigned int length = 0;
	    unsigned char *data;
	    int rv;
	    if (!value) {
		data = NULL;
	    } else {
		data = parse_raw_str_data(value, &length);
		if (!data)
		    return ENOMEM;
	    }
	    rv = ipmi_fru_set_data_val(self, index, num, IPMI_FRU_DATA_BINARY,
				       (char *) data, length);
	    if (data)
		free(data);
	    return rv;
	} else if (strcmp(type, "unicode") == 0) {
	    unsigned int length = 0;
	    unsigned char *data;
	    int rv;
	    if (!value) {
		data = NULL;
	    } else {
		data = parse_raw_str_data(value, &length);
		if (!data)
		    return ENOMEM;
	    }
	    rv = ipmi_fru_set_data_val(self, index, num, IPMI_FRU_DATA_UNICODE,
				       (char *) data, length);
	    if (data)
		free(data);
	    return rv;
	} else if (strcmp(type, "ascii") == 0) {
	    int length = 0;
	    if (value)
		length = strlen(value);
	    return ipmi_fru_set_data_val(self, index, num, IPMI_FRU_DATA_ASCII,
					 value, length);
	} else {
	    return EINVAL;
	}
    }
SWIGINTERN int ipmi_fru_t_set_array(ipmi_fru_t *self,int index,int num,char *type,intarray value){
	if (value.len < 0)
	    return EINVAL;
	if (!type)
	    return EINVAL;

	if (strcmp(type, "integer") == 0) {
	    /* Only take the first value. */
	    if (value.len <= 0)
		return EINVAL;
	    return ipmi_fru_set_int_val(self, index, num, value.val[0]);
	} else if (strcmp(type, "time") == 0) {
	    /* Only take the first value. */
	    if (value.len <= 0)
		return EINVAL;
	    return ipmi_fru_set_time_val(self, index, num, value.val[0]);
	} else if (strcmp(type, "binary") == 0) {
	    unsigned int length = value.len;
	    unsigned char *data;
	    int rv;

	    if (length == 0)
		data = malloc(1);
	    else
		data = malloc(length);
	    if (!data)
		return ENOMEM;
	    parse_ipmi_data(value, data, length, &length);
	    rv = ipmi_fru_set_data_val(self, index, num, IPMI_FRU_DATA_BINARY,
				       (char *) data, length);
	    free(data);
	    return rv;
	} else if (strcmp(type, "unicode") == 0) {
	    unsigned int length = value.len;
	    unsigned char *data = malloc(length);
	    int rv;
	    if (!data)
		return EINVAL;
	    parse_ipmi_data(value, data, length, &length);
	    rv = ipmi_fru_set_data_val(self, index, num, IPMI_FRU_DATA_UNICODE,
				       (char *) data, length);
	    free(data);
	    return rv;
	} else if (strcmp(type, "ascii") == 0) {
	    unsigned int length = value.len;
	    unsigned char *data;
	    int rv;
	    if (length == 0)
		data = malloc(1);
	    else
		data = malloc(length);
	    if (!data)
		return ENOMEM;
	    parse_ipmi_data(value, data, length, &length);
	    rv = ipmi_fru_set_data_val(self, index, num, IPMI_FRU_DATA_ASCII,
				       (char *) data, length);
	    free(data);
	    return rv;
	} else {
	    return EINVAL;
	}
    }

SWIGINTERN int
SWIG_AsVal_unsigned_SS_long SWIG_PERL_DECL_ARGS_2(SV *obj, unsigned long *val) 
{
  if (SvUOK(obj)) {
    UV v = SvUV(obj);
    if (UVSIZE <= sizeof(*val) || v <= ULONG_MAX) {
      if (val) *val = v;
      return SWIG_OK;
    }
    return SWIG_OverflowError;
  } else if (SvIOK(obj)) {
    IV v = SvIV(obj);
    if (v >= 0 && (IVSIZE <= sizeof(*val) || v <= ULONG_MAX)) {
      if (val) *val = v;
      return SWIG_OK;
    }
    return SWIG_OverflowError;
  } else {
    int dispatch = 0;
    const char *nptr = SvPV_nolen(obj);
    if (nptr) {
      char *endptr;
      unsigned long v;
      errno = 0;
      v = strtoul(nptr, &endptr,0);
      if (errno == ERANGE) {
	errno = 0;
	return SWIG_OverflowError;
      } else {
	if (*endptr == '\0') {
	  if (val) *val = v;
	  return SWIG_Str2NumCast(SWIG_OK);
	}
      }
    }
    if (!dispatch) {
      double d;
      int res = SWIG_AddCast(SWIG_AsVal_double SWIG_PERL_CALL_ARGS_2(obj,&d));
      if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, 0, ULONG_MAX)) {
	if (val) *val = (unsigned long)(d);
	return res;
      }
    }
  }
  return SWIG_TypeError;
}


SWIGINTERN int
SWIG_AsVal_unsigned_SS_int SWIG_PERL_DECL_ARGS_2(SV * obj, unsigned int *val)
{
  unsigned long v;
  int res = SWIG_AsVal_unsigned_SS_long SWIG_PERL_CALL_ARGS_2(obj, &v);
  if (SWIG_IsOK(res)) {
    if ((v > UINT_MAX)) {
      return SWIG_OverflowError;
    } else {
      if (val) *val = (unsigned int)(v);
    }
  }  
  return res;
}

SWIGINTERN int ipmi_fru_t_set_multirecord(ipmi_fru_t *self,unsigned int num,unsigned int type,unsigned int version,char *value){
	unsigned int length = 0;
	unsigned char *data;
	int rv;

	if (!value) {
	    data = NULL;
	} else {
	    data = parse_raw_str_data(value, &length);
	    if (!data)
		return ENOMEM;
	}
	rv = ipmi_fru_set_multi_record(self, num, type, version,
				       data, length);
	if (data)
	    free(data);
	return rv;
    }
SWIGINTERN int ipmi_fru_t_set_multirecord_array(ipmi_fru_t *self,unsigned int num,unsigned int type,unsigned int version,intarray value){
	unsigned int length = value.len;
	unsigned char *data;
	int rv;

	if (length == 0)
	    data = malloc(1);
	else
	    data = malloc(length);
	if (!data)
	    return ENOMEM;
	parse_ipmi_data(value, data, length, &length);
	rv = ipmi_fru_set_multi_record(self, num, type, version,
				       data, length);
	free(data);
	return rv;
    }
SWIGINTERN int ipmi_fru_t_add_area(ipmi_fru_t *self,unsigned int area,unsigned int offset,unsigned int length){
	return ipmi_fru_add_area(self, area, offset, length);
    }
SWIGINTERN int ipmi_fru_t_delete_area(ipmi_fru_t *self,int area){
	return ipmi_fru_delete_area(self, area);
    }
SWIGINTERN int ipmi_fru_t_area_get_offset(ipmi_fru_t *self,unsigned int area,unsigned int *offset){
	return ipmi_fru_area_get_offset(self, area, offset);
    }
SWIGINTERN int ipmi_fru_t_area_get_length(ipmi_fru_t *self,unsigned int area,unsigned int *length){
	return ipmi_fru_area_get_length(self, area, length);
    }
SWIGINTERN int ipmi_fru_t_area_set_offset(ipmi_fru_t *self,unsigned int area,unsigned int offset){
	return ipmi_fru_area_set_offset(self, area, offset);
    }
SWIGINTERN int ipmi_fru_t_area_set_length(ipmi_fru_t *self,unsigned int area,unsigned int length){
	return ipmi_fru_area_set_length(self, area, length);
    }
SWIGINTERN int ipmi_fru_t_area_get_used_length(ipmi_fru_t *self,unsigned int area,unsigned int *used_length){
	return ipmi_fru_area_get_used_length(self, area, used_length);
    }
SWIGINTERN int ipmi_fru_t_write(ipmi_fru_t *self,swig_cb *handler){
	int         rv;
	swig_cb_val *handler_val = NULL;
	ipmi_fru_cb cb_handler = NULL;

	IPMI_SWIG_C_CB_ENTRY
	if (!nil_swig_cb(handler)) {
	    if (! valid_swig_cb(handler, fru_written)) {
		rv = EINVAL;
		goto out_err;
	    }
	    cb_handler = fru_written_done;
	    handler_val = ref_swig_cb(handler, fru_written);
	    ipmi_fru_ref(self);
	}

	rv = ipmi_fru_write(self, cb_handler, handler_val);
	if (rv) {
	    if (handler_val)
		deref_swig_cb_val(handler_val);
	}
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_fru_t_multi_record_get_root_node(ipmi_fru_t *self,unsigned int record_num,char const **name,ipmi_fru_node_t **sub_node){
	int rv;
	rv = ipmi_fru_multi_record_get_root_node(self, record_num,
						 name, sub_node);
	return rv;
    }
SWIGINTERN int ipmi_fru_t_get_root_node(ipmi_fru_t *self,char const **type,ipmi_fru_node_t **sub_node){
	return ipmi_fru_get_root_node(self, type, sub_node);
    }
SWIGINTERN void delete_ipmi_fru_node_t(ipmi_fru_node_t *self){
	ipmi_fru_put_node(self);
    }
SWIGINTERN int ipmi_fru_node_t_get_field(ipmi_fru_node_t *self,unsigned int index,char const **name,char const **type,char **value,ipmi_fru_node_t **sub_node){
	int                       rv;
	enum ipmi_fru_data_type_e dtype;
	int                       intval;
	double                    floatval;
	time_t                    time;
	char                      *data = NULL;
	unsigned int              data_len;
	int                       len;
	char                      dummy[1];
	char                      *str, *s;
	int                       i;
	
	rv = ipmi_fru_node_get_field(self,
				     index,
				     name,
				     &dtype,
				     &intval,
				     &time,
				     &floatval,
				     &data,
				     &data_len,
				     sub_node);
	if (rv)
	    return rv;

	switch(dtype) {
	case IPMI_FRU_DATA_INT:
	    len = snprintf(dummy, 1, "%d", intval);
	    str = malloc(len + 1);
	    sprintf(str, "%d", intval);
	    *type = "integer";
	    break;

	case IPMI_FRU_DATA_BOOLEAN:
	    len = snprintf(dummy, 1, "%d", intval);
	    str = malloc(len + 1);
	    sprintf(str, "%d", intval);
	    *type = "boolean";
	    break;

	case IPMI_FRU_DATA_TIME:
	    len = snprintf(dummy, 1, "%ld", (long) time);
	    str = malloc(len + 1);
	    sprintf(str, "%ld", (long) time);
	    *type = "time";
	    break;

	case IPMI_FRU_DATA_FLOAT:
	    len = snprintf(dummy, 1, "%lf", floatval);
	    str = malloc(len + 1);
	    sprintf(str, "%lf", floatval);
	    *type = "float";
	    break;

	case IPMI_FRU_DATA_BINARY:
	    len = data_len * 5;
	    str = malloc(len + 1);
	    s = str;
	    if (data_len > 0)
		s += sprintf(s, "0x%2.2x", (unsigned char) data[0]);
	    else
		*s = '\0';
	    for (i=1; i<data_len; i++)
		s += sprintf(s, " 0x%2.2x", (unsigned char) data[i]);
	    *type = "binary";
	    break;

	case IPMI_FRU_DATA_UNICODE:
	    len = data_len * 5;
	    str = malloc(len + 1);
	    s = str;
	    if (data_len > 0)
		s += sprintf(s, "0x%2.2x", (unsigned char) data[0]);
	    else
		*s = '\0';
	    for (i=1; i<data_len; i++)
		s += sprintf(s, " 0x%2.2x", (unsigned char) data[i]);
	    *type = "unicode";
	    break;

	case IPMI_FRU_DATA_ASCII:
	    str = strdup(data);
	    *type = "ascii";
	    break;

	case IPMI_FRU_DATA_SUB_NODE:
	    str = NULL;
	    *type = "subnode";

	    /* Put the array length (or the -1) in the value */
	    len = snprintf(dummy, 1, "%d", intval);
	    str = malloc(len + 1);
	    sprintf(str, "%d", intval);
	    break;

	default:
	    str = NULL;
	}

	if (data)
	    ipmi_fru_data_free(data);

	*value = str;

	return 0;
    }
SWIGINTERN int ipmi_fru_node_t_get_enum_val(ipmi_fru_node_t *self,unsigned int index,int *pos,int *nextpos,char const **data){
	return ipmi_fru_node_get_enum_val(self, index, pos, nextpos, data);
    }
SWIGINTERN int ipmi_fru_node_t_set_field(ipmi_fru_node_t *self,unsigned int index,char const *type,char *value){
	int                       rv;
	enum ipmi_fru_data_type_e dtype;
	int                       intval = 0;
	double                    floatval = 0.0;
	time_t                    time = 0;
	char                      *data = NULL;
	unsigned int              data_len = 0;
	char                      *s;

	if (!type)
	    return EINVAL;

	if (strcmp(type, "subnode") == 0) {
	    dtype = IPMI_FRU_DATA_SUB_NODE;
	    if (value) {
		data = (char *) parse_raw_str_data(value, &data_len);
		if (!data)
		    return ENOMEM;
	    }
	    goto ready_to_set;
	} else if (strcmp(type, "binary") == 0) {
	    dtype = IPMI_FRU_DATA_BINARY;
	    if (value) {
		data = (char *) parse_raw_str_data(value, &data_len);
		if (!data)
		    return ENOMEM;
	    }
	    goto ready_to_set;
	} else if (strcmp(type, "unicode") == 0) {
	    dtype = IPMI_FRU_DATA_UNICODE;
	    if (value) {
		data = (char *) parse_raw_str_data(value, &data_len);
		if (!data)
		    return ENOMEM;
	    }
	    goto ready_to_set;
	} else if (strcmp(type, "ascii") == 0) {
	    dtype = IPMI_FRU_DATA_ASCII;
	    if (value) {
		data = strdup(value);
		if (!data)
		    return ENOMEM;
		data_len = strlen(value);
	    }
	    goto ready_to_set;
	}

	if (!value || !(*value))
	    return EINVAL;

	if (strcmp(type, "integer") == 0) {
	    dtype = IPMI_FRU_DATA_INT;
	    intval = strtol(value, &s, 0);
	    if (*s != '\0')
		return EINVAL;
	} else if (strcmp(type, "boolean") == 0) {
	    dtype = IPMI_FRU_DATA_BOOLEAN;
	    intval = strtol(value, &s, 0);
	    if (*s == '\0')
		intval = !!intval;
	    else if (strcasecmp(value, "true") == 0)
		intval = 1;
	    else if (strcasecmp(value, "false") == 0)
		intval = 0;
	    else
		return EINVAL;
	} else if (strcmp(type, "time") == 0) {
	    dtype = IPMI_FRU_DATA_TIME;
	    time = strtol(value, &s, 0);
	    if (*s != '\0')
		return EINVAL;
	} else if (strcmp(type, "float") == 0) {
	    dtype = IPMI_FRU_DATA_FLOAT;
	    floatval = strtod(value, &s);
	    if (*s != '\0')
		return EINVAL;
	} else
	    return EINVAL;

    ready_to_set:
	rv = ipmi_fru_node_set_field(self, index, dtype, intval, time,
				     floatval, data, data_len);

	if (data)
	    free(data);
	return rv;
    }
SWIGINTERN int ipmi_fru_node_t_settable(ipmi_fru_node_t *self,unsigned int index){
	return ipmi_fru_node_settable(self, index);
    }
SWIGINTERN char *ipmi_fru_node_t_get_subtype(ipmi_fru_node_t *self){
	enum ipmi_fru_data_type_e dtype;        
	char                      *type;
	int                       rv;

	rv = ipmi_fru_node_get_subtype(self, &dtype);
	if (rv)
	    return NULL;
	switch (dtype) {
	case IPMI_FRU_DATA_INT:
	    type = "integer";
	    break;

	case IPMI_FRU_DATA_BOOLEAN:
	    type = "boolean";
	    break;

	case IPMI_FRU_DATA_TIME:
	    type = "time";
	    break;

	case IPMI_FRU_DATA_FLOAT:
	    type = "float";
	    break;

	case IPMI_FRU_DATA_BINARY:
	    type = "binary";
	    break;

	case IPMI_FRU_DATA_UNICODE:
	    type = "unicode";
	    break;

	case IPMI_FRU_DATA_ASCII:
	    type = "ascii";
	    break;

	case IPMI_FRU_DATA_SUB_NODE:
	    type = "subnode";
	    break;

	default:
	    return NULL;
	}

	return type;
    }
SWIGINTERN ipmi_domain_t *ipmi_mc_t_get_domain(ipmi_mc_t *self){
	return ipmi_mc_get_domain(self);
    }
SWIGINTERN char *ipmi_mc_t_get_name(ipmi_mc_t *self){
	char name[IPMI_MC_NAME_LEN];

	ipmi_mc_get_name(self, name, sizeof(name));
	return strdup(name);
    }
SWIGINTERN ipmi_mcid_t *ipmi_mc_t_get_id(ipmi_mc_t *self){
	ipmi_mcid_t *rv = malloc(sizeof(*rv));
	if (rv)
	    *rv = ipmi_mc_convert_to_id(self);
	return rv;
    }
SWIGINTERN char *ipmi_mc_t_get_guid(ipmi_mc_t *self){
	char          *str = NULL;
	unsigned char guid[16];

	if (ipmi_mc_get_guid(self, guid) == 0) {
	    str = malloc(16 * 3);
	    if (str) {
		char *s = str;
		int  i;
		s += sprintf(s, "%2.2x", guid[0]);
		for (i=1; i<16; i++)
		    s += sprintf(s, " %2.2x", guid[i]);
	    }
	}
	return str;
    }
SWIGINTERN int ipmi_mc_t_provides_device_sdrs(ipmi_mc_t *self){
	return ipmi_mc_provides_device_sdrs(self);
    }
SWIGINTERN int ipmi_mc_t_device_available(ipmi_mc_t *self){
	return ipmi_mc_device_available(self);
    }
SWIGINTERN int ipmi_mc_t_chassis_support(ipmi_mc_t *self){
	return ipmi_mc_chassis_support(self);
    }
SWIGINTERN int ipmi_mc_t_bridge_support(ipmi_mc_t *self){
	return ipmi_mc_bridge_support(self);
    }
SWIGINTERN int ipmi_mc_t_ipmb_event_generator_support(ipmi_mc_t *self){
	return ipmi_mc_ipmb_event_generator_support(self);
    }
SWIGINTERN int ipmi_mc_t_ipmb_event_receiver_support(ipmi_mc_t *self){
	return ipmi_mc_ipmb_event_receiver_support(self);
    }
SWIGINTERN int ipmi_mc_t_fru_inventory_support(ipmi_mc_t *self){
	return ipmi_mc_fru_inventory_support(self);
    }
SWIGINTERN int ipmi_mc_t_sel_device_support(ipmi_mc_t *self){
	return ipmi_mc_sel_device_support(self);
    }
SWIGINTERN int ipmi_mc_t_sdr_repository_support(ipmi_mc_t *self){
	return ipmi_mc_sdr_repository_support(self);
    }
SWIGINTERN int ipmi_mc_t_sensor_device_support(ipmi_mc_t *self){
	return ipmi_mc_sensor_device_support(self);
    }
SWIGINTERN int ipmi_mc_t_device_id(ipmi_mc_t *self){
	return ipmi_mc_device_id(self);
    }
SWIGINTERN int ipmi_mc_t_device_revision(ipmi_mc_t *self){
	return ipmi_mc_device_revision(self);
    }
SWIGINTERN int ipmi_mc_t_major_fw_revision(ipmi_mc_t *self){
	return ipmi_mc_major_fw_revision(self);
    }
SWIGINTERN int ipmi_mc_t_minor_fw_revision(ipmi_mc_t *self){
	return ipmi_mc_minor_fw_revision(self);
    }
SWIGINTERN int ipmi_mc_t_major_version(ipmi_mc_t *self){
	return ipmi_mc_major_version(self);
    }
SWIGINTERN int ipmi_mc_t_minor_version(ipmi_mc_t *self){
	return ipmi_mc_minor_version(self);
    }
SWIGINTERN int ipmi_mc_t_manufacturer_id(ipmi_mc_t *self){
	return ipmi_mc_manufacturer_id(self);
    }
SWIGINTERN int ipmi_mc_t_product_id(ipmi_mc_t *self){
	return ipmi_mc_product_id(self);
    }
SWIGINTERN char *ipmi_mc_t_aux_fw_revision(ipmi_mc_t *self){
	char *str;
	unsigned char data[4];

	str = malloc(28);
	ipmi_mc_aux_fw_revision(self, data);
	snprintf(str, 28,
		 "0x%2.2x 0x%2.2x 0x%2.2x 0x%2.2x",
		 data[0], data[1], data[2], data[3]);
	return str;
    }
SWIGINTERN int ipmi_mc_t_is_active(ipmi_mc_t *self){
	return ipmi_mc_is_active(self);
    }
SWIGINTERN int ipmi_mc_t_add_active_handler(ipmi_mc_t *self,swig_cb *handler){
	ipmi_mc_add_active_handler_cl
	    (self, mc_active_handler_cl, NULL);
	 	int         rv;							 	swig_cb_val *handler_val;					 	IPMI_SWIG_C_CB_ENTRY						 	if (! valid_swig_cb(handler, mc_active_cb))				 	    rv = EINVAL;						 	else {								 	    handler_val = ref_swig_cb(handler, mc_active_cb);			 	    rv = ipmi_mc_add_active_handler		 		 (self, mc_active_handler, handler_val);	 	    if (rv)							 		deref_swig_cb_val(handler_val);				 	}								 	IPMI_SWIG_C_CB_EXIT						 	return rv;;
    }
SWIGINTERN int ipmi_mc_t_remove_active_handler(ipmi_mc_t *self,swig_cb *handler){
	 	int         rv;							 	swig_cb_val *handler_val;					 	IPMI_SWIG_C_CB_ENTRY						 	if (! valid_swig_cb(handler, mc_active_cb))				 	    rv = EINVAL;						 	else {								 	    handler_val = get_swig_cb(handler, mc_active_cb);			 	    rv = ipmi_mc_remove_active_handler		 		 (self, mc_active_handler, handler_val);	 	    if (!rv)							 		deref_swig_cb_val(handler_val);				 	}								 	IPMI_SWIG_C_CB_EXIT						 	return rv;;
    }
SWIGINTERN int ipmi_mc_t_add_fully_up_handler(ipmi_mc_t *self,swig_cb *handler){
	ipmi_mc_add_fully_up_handler_cl
	    (self, mc_fully_up_handler_cl, NULL);
	 	int         rv;							 	swig_cb_val *handler_val;					 	IPMI_SWIG_C_CB_ENTRY						 	if (! valid_swig_cb(handler, mc_fully_up_cb))				 	    rv = EINVAL;						 	else {								 	    handler_val = ref_swig_cb(handler, mc_fully_up_cb);			 	    rv = ipmi_mc_add_fully_up_handler		 		 (self, mc_fully_up_handler, handler_val);	 	    if (rv)							 		deref_swig_cb_val(handler_val);				 	}								 	IPMI_SWIG_C_CB_EXIT						 	return rv;;
    }
SWIGINTERN int ipmi_mc_t_remove_fully_up_handler(ipmi_mc_t *self,swig_cb *handler){
	 	int         rv;							 	swig_cb_val *handler_val;					 	IPMI_SWIG_C_CB_ENTRY						 	if (! valid_swig_cb(handler, mc_fully_up_cb))				 	    rv = EINVAL;						 	else {								 	    handler_val = get_swig_cb(handler, mc_fully_up_cb);			 	    rv = ipmi_mc_remove_fully_up_handler		 		 (self, mc_fully_up_handler, handler_val);	 	    if (!rv)							 		deref_swig_cb_val(handler_val);				 	}								 	IPMI_SWIG_C_CB_EXIT						 	return rv;;
    }
SWIGINTERN int ipmi_mc_t_send_command(ipmi_mc_t *self,int lun,int netfn,int cmd,intarray msg_data,swig_cb *handler){
	int                        rv;
	swig_cb_val                *handler_val = NULL;
	ipmi_mc_response_handler_t msg_cb = NULL;
	ipmi_msg_t                 msg;
	unsigned char              data[MAX_IPMI_DATA_SIZE];
	unsigned int               data_len;

	IPMI_SWIG_C_CB_ENTRY
	msg.netfn = netfn;
	msg.cmd = cmd;
	msg.data = data;
	rv = parse_ipmi_data(msg_data, data, sizeof(data), &data_len);
	msg.data_len = data_len;
	if (rv)
	    goto out_err;

	if (!nil_swig_cb(handler)) {
	    if (! valid_swig_cb(handler, mc_cmd_cb)) {
		rv = EINVAL;
		goto out_err;
	    }
	    msg_cb = mc_msg_cb;
	    handler_val = ref_swig_cb(handler, mc_cmd_cb);
	}
	rv = ipmi_mc_send_command(self, lun, &msg, msg_cb, handler_val);
	if (rv && handler_val)
	    deref_swig_cb_val(handler_val);
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_mc_t_reset(ipmi_mc_t *self,int reset_type,swig_cb *handler){
	swig_cb_val     *handler_val = NULL;
	ipmi_mc_done_cb done = NULL;
	int             rv;

	IPMI_SWIG_C_CB_ENTRY
	if (!nil_swig_cb(handler)) {
	    if (! valid_swig_cb(handler, mc_reset_cb)) {
		rv = EINVAL;
		goto out_err;
	    }
	    handler_val = ref_swig_cb(handler, mc_reset_cb);
	    done = mc_reset_handler;
	}
	rv = ipmi_mc_reset(self, reset_type, done, handler_val);
	if (rv && handler_val)
	    deref_swig_cb_val(handler_val);
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_mc_t_get_events_enable(ipmi_mc_t *self){
	return ipmi_mc_get_events_enable(self);
    }
SWIGINTERN int ipmi_mc_t_set_events_enable(ipmi_mc_t *self,int val,swig_cb *handler){
	swig_cb_val     *handler_val = NULL;
	ipmi_mc_done_cb done = NULL;
	int             rv;

	IPMI_SWIG_C_CB_ENTRY
	if (!nil_swig_cb(handler)) {
	    if (! valid_swig_cb(handler, mc_events_enable_cb)) {
		rv = EINVAL;
		goto out_err;
	    }
	    handler_val = ref_swig_cb(handler, mc_events_enable_cb);
	    done = mc_events_enable_handler;
	}
	rv = ipmi_mc_set_events_enable(self, val, done, handler_val);
	if (rv && handler_val)
	    deref_swig_cb_val(handler_val);
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_mc_t_get_event_log_enable(ipmi_mc_t *self,swig_cb *handler){
	swig_cb_val *handler_val;
	int         rv;

	IPMI_SWIG_C_CB_ENTRY
	if (! valid_swig_cb(handler, mc_get_event_log_enable_cb))
	    rv = EINVAL;
	else {
	    handler_val = ref_swig_cb(handler, mc_get_event_log_enable_cb);
	    
	    rv = ipmi_mc_get_event_log_enable(self,
					      mc_get_event_log_enable_handler,
					      handler_val);
	    if (rv)
		deref_swig_cb_val(handler_val);
	}
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_mc_t_set_event_log_enable(ipmi_mc_t *self,int val,swig_cb *handler){
	swig_cb_val     *handler_val = NULL;
	ipmi_mc_done_cb done = NULL;
	int             rv;

	IPMI_SWIG_C_CB_ENTRY
	if (!nil_swig_cb(handler)) {
	    if (! valid_swig_cb(handler, mc_set_event_log_enable_cb)) {
		rv = EINVAL;
		goto out_err;
	    }
	    handler_val = ref_swig_cb(handler, mc_set_event_log_enable_cb);
	    done = mc_set_event_log_enable_handler;
	}
	rv = ipmi_mc_set_event_log_enable(self, val, done, handler_val);
	if (rv && handler_val)
	    deref_swig_cb_val(handler_val);
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_mc_t_reread_sensors(ipmi_mc_t *self,swig_cb *handler){
	swig_cb_val     *handler_val = NULL;
	ipmi_mc_done_cb done = NULL;
	int             rv;

	IPMI_SWIG_C_CB_ENTRY
	if (!nil_swig_cb(handler)) {
	    if (! valid_swig_cb(handler, mc_reread_sensors_cb)) {
		rv = EINVAL;
		goto out_err;
	    }
	    handler_val = ref_swig_cb(handler, mc_reread_sensors_cb);
	    done = mc_reread_sensors_handler;
	}
	rv = ipmi_mc_reread_sensors(self, done, handler_val);
	if (rv && handler_val)
	    deref_swig_cb_val(handler_val);
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN void ipmi_mc_t_set_sel_rescan_time(ipmi_mc_t *self,unsigned int seconds){
	ipmi_mc_set_sel_rescan_time(self, seconds);
    }
SWIGINTERN int ipmi_mc_t_get_sel_rescan_time(ipmi_mc_t *self){
	return ipmi_mc_get_sel_rescan_time(self);
    }
SWIGINTERN int ipmi_mc_t_reread_sel(ipmi_mc_t *self,swig_cb *handler){
	swig_cb_val     *handler_val = NULL;
	ipmi_mc_done_cb done = NULL;
	int             rv;

	IPMI_SWIG_C_CB_ENTRY
	if (!nil_swig_cb(handler)) {
	    if (! valid_swig_cb(handler, mc_reread_sel_cb)) {
		rv = EINVAL;
		goto out_err;
	    }
	    handler_val = ref_swig_cb(handler, mc_reread_sel_cb);
	    done = mc_reread_sel_handler;
	}
	rv = ipmi_mc_reread_sel(self, done, handler_val);
	if (rv && handler_val)
	    deref_swig_cb_val(handler_val);
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_mc_t_get_current_sel_time(ipmi_mc_t *self,swig_cb *handler){
	swig_cb_val     *handler_val = NULL;
	sel_get_time_cb done = NULL;
	int             rv;

	IPMI_SWIG_C_CB_ENTRY
	if (!nil_swig_cb(handler)) {
	    if (! valid_swig_cb(handler, mc_get_sel_time_cb)) {
		rv = EINVAL;
		goto out_err;
	    }
	    handler_val = ref_swig_cb(handler, mc_get_sel_time_cb);
	    done = mc_sel_get_time_cb;
	}
	rv = ipmi_mc_get_current_sel_time(self, done, handler_val);
	if (rv && handler_val)
	    deref_swig_cb_val(handler_val);
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN ipmi_event_t *ipmi_mc_t_first_event(ipmi_mc_t *self){
	return ipmi_mc_first_event(self);
    }
SWIGINTERN ipmi_event_t *ipmi_mc_t_last_event(ipmi_mc_t *self){
	return ipmi_mc_last_event(self);
    }
SWIGINTERN ipmi_event_t *ipmi_mc_t_next_event(ipmi_mc_t *self,ipmi_event_t *event){
	return ipmi_mc_next_event(self, event);
    }
SWIGINTERN ipmi_event_t *ipmi_mc_t_prev_event(ipmi_mc_t *self,ipmi_event_t *event){
	return ipmi_mc_prev_event(self, event);
    }
SWIGINTERN ipmi_event_t *ipmi_mc_t_event_by_recid(ipmi_mc_t *self,int record_id){
	return ipmi_mc_event_by_recid(self, record_id);
    }
SWIGINTERN int ipmi_mc_t_sel_count(ipmi_mc_t *self){
	return ipmi_mc_sel_count(self);
    }
SWIGINTERN int ipmi_mc_t_sel_entries_used(ipmi_mc_t *self){
	return ipmi_mc_sel_entries_used(self);
    }
SWIGINTERN int ipmi_mc_t_sel_get_major_version(ipmi_mc_t *self){
	return ipmi_mc_sel_get_major_version(self);
    }
SWIGINTERN int ipmi_mc_t_sel_get_minor_version(ipmi_mc_t *self){
	return ipmi_mc_sel_get_minor_version(self);
    }
SWIGINTERN int ipmi_mc_t_sel_get_num_entries(ipmi_mc_t *self){
	return ipmi_mc_sel_get_num_entries(self);
    }
SWIGINTERN int ipmi_mc_t_sel_get_free_bytes(ipmi_mc_t *self){
	return ipmi_mc_sel_get_free_bytes(self);
    }
SWIGINTERN int ipmi_mc_t_sel_get_overflow(ipmi_mc_t *self){
	return ipmi_mc_sel_get_overflow(self);
    }
SWIGINTERN int ipmi_mc_t_sel_get_supports_delete_sel(ipmi_mc_t *self){
	return ipmi_mc_sel_get_supports_delete_sel(self);
    }
SWIGINTERN int ipmi_mc_t_sel_get_supports_partial_add_sel(ipmi_mc_t *self){
	return ipmi_mc_sel_get_supports_partial_add_sel(self);
    }
SWIGINTERN int ipmi_mc_t_sel_get_supports_reserve_sel(ipmi_mc_t *self){
	return ipmi_mc_sel_get_supports_reserve_sel(self);
    }
SWIGINTERN int ipmi_mc_t_sel_get_supports_get_sel_allocation(ipmi_mc_t *self){
	return ipmi_mc_sel_get_supports_get_sel_allocation(self);
    }
SWIGINTERN int ipmi_mc_t_sel_get_last_addition_timestamp(ipmi_mc_t *self){
	return ipmi_mc_sel_get_last_addition_timestamp(self);
    }
SWIGINTERN int ipmi_mc_t_channel_get_info(ipmi_mc_t *self,int channel,swig_cb *handler){
	int         rv;
	swig_cb_val *handler_val = NULL;

	IPMI_SWIG_C_CB_ENTRY
	if (!valid_swig_cb(handler, mc_channel_got_info_cb))
	    rv = EINVAL;
	else {
	    handler_val = ref_swig_cb(handler, mc_channel_got_info_cb);
	    rv = ipmi_mc_channel_get_info(self, channel,
					  mc_channel_get_info, handler_val);
	    if (rv)
		deref_swig_cb_val(handler_val);
	}
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_mc_t_channel_get_access(ipmi_mc_t *self,int channel,char *type,swig_cb *handler){
	int                  rv;
	swig_cb_val          *handler_val = NULL;
	enum ipmi_set_dest_e dest;

	IPMI_SWIG_C_CB_ENTRY
	if (strcmp(type, "nonvolatile") == 0)
	    dest = IPMI_SET_DEST_NON_VOLATILE;
	else if (strcmp(type, "volatile") == 0)
	    dest = IPMI_SET_DEST_VOLATILE;
	else {
	    rv = EINVAL;
	    goto out_err;
	}

	if (!valid_swig_cb(handler, mc_channel_got_access_cb)) {
	    rv = EINVAL;
	    goto out_err;
	}
	handler_val = ref_swig_cb(handler, mc_channel_got_access_cb);
	rv = ipmi_mc_channel_get_access(self, channel, dest,
					mc_channel_get_access, handler_val);
	if (rv)
	    deref_swig_cb_val(handler_val);
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_mc_t_channel_set_access(ipmi_mc_t *self,ipmi_channel_access_t *access,int channel,char *type,swig_cb *handler){
	int                  rv;
	swig_cb_val          *handler_val = NULL;
	ipmi_mc_done_cb      done = NULL;
	enum ipmi_set_dest_e dest;

	IPMI_SWIG_C_CB_ENTRY
	if (strcmp(type, "nonvolatile") == 0)
	    dest = IPMI_SET_DEST_NON_VOLATILE;
	else if (strcmp(type, "volatile") == 0)
	    dest = IPMI_SET_DEST_VOLATILE;
	else {
	    rv = EINVAL;
	    goto out_err;
	}

	if (!nil_swig_cb(handler)) {
	    if (!valid_swig_cb(handler, mc_channel_set_access_cb)) {
		rv = EINVAL;
		goto out_err;
	    }
	    handler_val = ref_swig_cb(handler, mc_channel_set_access_cb);
	    done = mc_channel_set_access;
	}
	rv = ipmi_mc_channel_set_access(self, channel, dest, access,
					done, handler_val);
	if (rv)
	    deref_swig_cb_val(handler_val);
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_mc_t_get_users(ipmi_mc_t *self,int channel,int user,swig_cb *handler){
	int         rv;
	swig_cb_val *handler_val;

	IPMI_SWIG_C_CB_ENTRY
	if (!valid_swig_cb(handler, mc_channel_got_users_cb)) 
	    rv = EINVAL;
	else {
	    handler_val = ref_swig_cb(handler, mc_channel_got_users_cb);
	    rv = ipmi_mc_get_users(self, channel, user,
				   mc_channel_got_users, handler_val);
	    if (rv)
		deref_swig_cb_val(handler_val);
	}
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_mc_t_set_user(ipmi_mc_t *self,ipmi_user_t *userinfo,int channel,int usernum,swig_cb *handler){
	int             rv;
	swig_cb_val     *handler_val = NULL;
	ipmi_mc_done_cb done = NULL;

	IPMI_SWIG_C_CB_ENTRY
	if (!nil_swig_cb(handler)) {
	    if (! valid_swig_cb(handler, mc_channel_set_user_cb)) {
		rv = EINVAL;
		goto out_err;
	    }
	    handler_val = ref_swig_cb(handler, mc_channel_set_user_cb);
	    done = mc_channel_set_user;
	}
	rv = ipmi_mc_set_user(self, channel, usernum, userinfo,
			      done, handler_val);
	if (rv && handler_val)
	    deref_swig_cb_val(handler_val);
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN ipmi_lanparm_t *ipmi_mc_t_get_lanparm(ipmi_mc_t *self,int channel){
	int            rv;
	ipmi_lanparm_t *lp;

	rv = ipmi_lanparm_alloc(self, channel, &lp);
	if (rv)
	    return NULL;
	return lp;
    }
SWIGINTERN ipmi_pef_t *ipmi_mc_t_get_pef(ipmi_mc_t *self,swig_cb *handler){
	int              rv;
	ipmi_pef_t       *pef = NULL;
	swig_cb_val      *handler_val = NULL;
	ipmi_pef_done_cb done = NULL;

	IPMI_SWIG_C_CB_ENTRY
	if (!nil_swig_cb(handler)) {
	    if (!valid_swig_cb(handler, got_pef_cb))
		goto out_err;
	    handler_val = ref_swig_cb(handler, got_pef_cb);
	    done = get_pef;
	}
	rv = ipmi_pef_alloc(self, done, handler_val, &pef);
	if (rv && handler_val)
	    deref_swig_cb_val(handler_val);
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return pef;
    }
SWIGINTERN ipmi_pet_t *ipmi_mc_t_get_pet(ipmi_mc_t *self,int channel,char *ip_addr,char *mac_addr,int eft_sel,int policy_num,int apt_sel,int lan_dest_sel,swig_cb *handler){
	int              rv;
	ipmi_pet_t       *pet = NULL;
	swig_cb_val      *handler_val = NULL;
	struct in_addr   ip;
	unsigned char    mac[6];
	ipmi_pet_done_cb done = NULL;

	IPMI_SWIG_C_CB_ENTRY
        rv = parse_ip_addr(ip_addr, &ip);
	if (rv)
	    goto out_err;

        rv = parse_mac_addr(mac_addr, mac);
	if (rv)
	    goto out_err;

	if (!nil_swig_cb(handler)) {
	    if (!valid_swig_cb(handler, got_pet_cb))
		goto out_err;
	    handler_val = ref_swig_cb(handler, got_pet_cb);
	    done = get_pet;
	}
	rv = ipmi_pet_create_mc(self, channel, ip, mac, eft_sel, policy_num,
				apt_sel, lan_dest_sel, done, handler_val,
				&pet);
	if (rv && handler_val)
	    deref_swig_cb_val(handler_val);
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return pet;
    }
SWIGINTERN ipmi_solparm_t *ipmi_mc_t_get_solparm(ipmi_mc_t *self,int channel){
	int            rv;
	ipmi_solparm_t *lp;

	rv = ipmi_solparm_alloc(self, channel, &lp);
	if (rv)
	    return NULL;
	return lp;
    }
SWIGINTERN void delete_ipmi_mcid_t(ipmi_mcid_t *self){
	free(self);
    }
SWIGINTERN int ipmi_mcid_t_cmp(ipmi_mcid_t *self,ipmi_mcid_t *other){
	return ipmi_cmp_mc_id(*self, *other);
    }
SWIGINTERN int ipmi_mcid_t_to_mc(ipmi_mcid_t *self,swig_cb *handler){
	int rv;

	IPMI_SWIG_C_CB_ENTRY
	if (! valid_swig_cb(handler, mc_cb))
	    rv = EINVAL;
	else
	    rv = ipmi_mc_pointer_cb(*self, handle_mc_cb,
				    get_swig_cb(handler, mc_cb));
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN void delete_ipmi_event_t(ipmi_event_t *self){
	ipmi_event_free(self);
    }
SWIGINTERN int ipmi_event_t_delete(ipmi_event_t *self,swig_cb *handler){
	swig_cb_val    *handler_val = NULL;
	ipmi_domain_cb done = NULL;
	int            rv;

	IPMI_SWIG_C_CB_ENTRY
	if (!nil_swig_cb(handler)) {
	    if (! valid_swig_cb(handler, event_delete_cb)) {
		rv = EINVAL;
		goto out_err;
	    }
	    handler_val = ref_swig_cb(handler, event_delete_cb);
	    done = event_deleted_handler;
	}
	rv = ipmi_event_delete(self, done, handler_val);
	if (rv && handler_val)
	    deref_swig_cb_val(handler_val);
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN ipmi_mcid_t *ipmi_event_t_get_mc_id(ipmi_event_t *self){
	ipmi_mcid_t *rv = malloc(sizeof(*rv));
	if (rv)
	    *rv = ipmi_event_get_mcid(self);
	return rv;
    }
SWIGINTERN int ipmi_event_t_get_record_id(ipmi_event_t *self){
	return ipmi_event_get_record_id(self);
    }
SWIGINTERN int ipmi_event_t_get_type(ipmi_event_t *self){
	return ipmi_event_get_type(self);
    }
SWIGINTERN double ipmi_event_t_get_timestamp(ipmi_event_t *self){
	return ((double) ipmi_event_get_timestamp(self)) / 1000000000.0;
    }

SWIGINTERNINLINE SV *
SWIG_From_double  SWIG_PERL_DECL_ARGS_1(double value)
{
  return sv_2mortal(newSVnv(value));
}

SWIGINTERN intarray ipmi_event_t_get_data(ipmi_event_t *self){
	intarray      rv;
	int           i;
	unsigned char *data;
	int           data_len;

	data_len = ipmi_event_get_data_len(self);
	data = malloc(data_len);
	data_len = ipmi_event_get_data(self, data, 0, data_len);
	rv.val = malloc(sizeof(int) * data_len);
	for (i=0; i<data_len; i++)
	    rv.val[i] = data[i];
	free(data);
	rv.len = data_len;
	return rv;
    }
SWIGINTERN int ipmi_event_t_call_handler(ipmi_event_t *self,swig_cb *handler){
	event_call_handler_data_t info;
	int                       rv;
	
	if (! valid_swig_2cb(handler, threshold_event_cb, discrete_event_cb))
	    return EINVAL;

	info.handlers = ipmi_event_handlers_alloc();
	if (! info.handlers)
	    return ENOMEM;

	ipmi_event_handlers_set_threshold(info.handlers,
					  sensor_threshold_event_handler);
	ipmi_event_handlers_set_discrete(info.handlers,
					 sensor_discrete_event_handler);

	info.handlers_val = ref_swig_2cb(handler, threshold_event_cb,
					 discrete_event_cb);

	info.event = self;
	info.rv = 0;
	rv = ipmi_mc_pointer_cb(ipmi_event_get_mcid(self),
				event_call_handler_mc_cb,
				&info);
	if (rv == 0)
	    rv = info.rv;
	
	ipmi_event_handlers_free(info.handlers);
	deref_swig_cb_val(handler);

	return rv;
    }
SWIGINTERN char *ipmi_sensor_t_get_name(ipmi_sensor_t *self){
	char name[IPMI_SENSOR_NAME_LEN];

	ipmi_sensor_get_name(self, name, sizeof(name));
	return strdup(name);
    }
SWIGINTERN ipmi_sensor_id_t *ipmi_sensor_t_get_id(ipmi_sensor_t *self){
	ipmi_sensor_id_t *rv = malloc(sizeof(*rv));
	if (rv)
	    *rv = ipmi_sensor_convert_to_id(self);
	return rv;
    }
SWIGINTERN int ipmi_sensor_t_add_event_handler(ipmi_sensor_t *self,swig_cb *handler){
	if (ipmi_sensor_get_event_reading_type(self)
	    == IPMI_EVENT_READING_TYPE_THRESHOLD)
	{
	    ipmi_sensor_add_threshold_event_handler_cl
		(self, sensor_threshold_event_handler_cl, NULL);
	     	int         rv;							 	swig_cb_val *handler_val;					 	IPMI_SWIG_C_CB_ENTRY						 	if (! valid_swig_cb(handler, threshold_event_cb))				 	    rv = EINVAL;						 	else {								 	    handler_val = ref_swig_cb(handler, threshold_event_cb);			 	    rv = ipmi_sensor_add_threshold_event_handler		 		 (self, sensor_threshold_event_handler, handler_val);	 	    if (rv)							 		deref_swig_cb_val(handler_val);				 	}								 	IPMI_SWIG_C_CB_EXIT						 	return rv;;
	} else {
	    ipmi_sensor_add_discrete_event_handler_cl
		(self, sensor_discrete_event_handler_cl, NULL);
	     	int         rv;							 	swig_cb_val *handler_val;					 	IPMI_SWIG_C_CB_ENTRY						 	if (! valid_swig_cb(handler, discrete_event_cb))				 	    rv = EINVAL;						 	else {								 	    handler_val = ref_swig_cb(handler, discrete_event_cb);			 	    rv = ipmi_sensor_add_discrete_event_handler		 		 (self, sensor_discrete_event_handler, handler_val);	 	    if (rv)							 		deref_swig_cb_val(handler_val);				 	}								 	IPMI_SWIG_C_CB_EXIT						 	return rv;;
	}
    }
SWIGINTERN int ipmi_sensor_t_remove_event_handler(ipmi_sensor_t *self,swig_cb *handler){
	if (ipmi_sensor_get_event_reading_type(self)
	    == IPMI_EVENT_READING_TYPE_THRESHOLD)
	{
	     	int         rv;							 	swig_cb_val *handler_val;					 	IPMI_SWIG_C_CB_ENTRY						 	if (! valid_swig_cb(handler, threshold_event_cb))				 	    rv = EINVAL;						 	else {								 	    handler_val = get_swig_cb(handler, threshold_event_cb);			 	    rv = ipmi_sensor_remove_threshold_event_handler		 		 (self, sensor_threshold_event_handler, handler_val);	 	    if (!rv)							 		deref_swig_cb_val(handler_val);				 	}								 	IPMI_SWIG_C_CB_EXIT						 	return rv;;
	} else {
	     	int         rv;							 	swig_cb_val *handler_val;					 	IPMI_SWIG_C_CB_ENTRY						 	if (! valid_swig_cb(handler, discrete_event_cb))				 	    rv = EINVAL;						 	else {								 	    handler_val = get_swig_cb(handler, discrete_event_cb);			 	    rv = ipmi_sensor_remove_discrete_event_handler		 		 (self, sensor_discrete_event_handler, handler_val);	 	    if (!rv)							 		deref_swig_cb_val(handler_val);				 	}								 	IPMI_SWIG_C_CB_EXIT						 	return rv;;
	}
    }
SWIGINTERN int ipmi_sensor_t_set_event_enables(ipmi_sensor_t *self,char *states,swig_cb *handler){
	int                 rv;
	swig_cb_val         *handler_val = NULL;
	ipmi_sensor_done_cb sensor_cb = NULL;
	ipmi_event_state_t  *st = NULL;

	IPMI_SWIG_C_CB_ENTRY
	if (ipmi_sensor_get_event_reading_type(self)
	    == IPMI_EVENT_READING_TYPE_THRESHOLD)
	{
	    rv = str_to_threshold_event_state(states, &st);
	} else {
	    rv = str_to_discrete_event_state(states, &st);
	}
	if (rv)
	    goto out_err;
	if (!nil_swig_cb(handler)) {
	    if (! valid_swig_cb(handler, sensor_event_enable_cb)) {
		rv = EINVAL;
		goto out_err;
	    }
	    sensor_cb = sensor_event_enable_handler;
	    handler_val = ref_swig_cb(handler, sensor_event_enable_cb);
	}
	rv = ipmi_sensor_set_event_enables(self, st, sensor_cb, handler_val);
	if (rv && handler_val)
	    deref_swig_cb_val(handler_val);
    out_err:
	if (st)
	    free(st);
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_sensor_t_enable_events(ipmi_sensor_t *self,char *states,swig_cb *handler){
	int                 rv;
	swig_cb_val         *handler_val = NULL;
	ipmi_sensor_done_cb sensor_cb = NULL;
	ipmi_event_state_t  *st = NULL;

	IPMI_SWIG_C_CB_ENTRY
	if (ipmi_sensor_get_event_reading_type(self)
	    == IPMI_EVENT_READING_TYPE_THRESHOLD)
	{
	    rv = str_to_threshold_event_state(states, &st);
	} else {
	    rv = str_to_discrete_event_state(states, &st);
	}
	if (rv)
	    goto out_err;
	if (!nil_swig_cb(handler)) {
	    if (! valid_swig_cb(handler, sensor_event_enable_cb)) {
		rv = EINVAL;
		goto out_err;
	    }
	    sensor_cb = sensor_event_enable_handler;
	    handler_val = ref_swig_cb(handler, sensor_event_enable_cb);
	}
	rv = ipmi_sensor_enable_events(self, st, sensor_cb, handler_val);
	if (rv && handler_val)
	    deref_swig_cb_val(handler_val);
    out_err:
	if (st)
	    free(st);
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_sensor_t_disable_events(ipmi_sensor_t *self,char *states,swig_cb *handler){
	int                 rv;
	swig_cb_val         *handler_val = NULL;
	ipmi_sensor_done_cb sensor_cb = NULL;
	ipmi_event_state_t  *st = NULL;

	IPMI_SWIG_C_CB_ENTRY
	if (ipmi_sensor_get_event_reading_type(self)
	    == IPMI_EVENT_READING_TYPE_THRESHOLD)
	{
	    rv = str_to_threshold_event_state(states, &st);
	} else {
	    rv = str_to_discrete_event_state(states, &st);
	}
	if (rv)
	    goto out_err;
	if (!nil_swig_cb(handler)) {
	    if (! valid_swig_cb(handler, sensor_event_enable_cb)) {
		rv = EINVAL;
		goto out_err;
	    }
	    sensor_cb = sensor_event_enable_handler;
	    handler_val = ref_swig_cb(handler, sensor_event_enable_cb);
	}
	rv = ipmi_sensor_disable_events(self, st, sensor_cb, handler_val);
	if (rv && handler_val)
	    deref_swig_cb_val(handler_val);
    out_err:
	if (st)
	    free(st);
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_sensor_t_get_event_enables(ipmi_sensor_t *self,swig_cb *handler){
	int                          rv;
	swig_cb_val                  *handler_val = NULL;
	ipmi_sensor_event_enables_cb sensor_cb = NULL;

	IPMI_SWIG_C_CB_ENTRY
	if (!valid_swig_cb(handler, sensor_get_event_enable_cb))
	    rv = EINVAL;
	else {
	    sensor_cb = sensor_get_event_enables_handler;
	    handler_val = ref_swig_cb(handler, sensor_get_event_enable_cb);
	    rv = ipmi_sensor_get_event_enables(self, sensor_cb, handler_val);
	    if (rv && handler_val)
		deref_swig_cb_val(handler_val);
	}
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_sensor_t_rearm(ipmi_sensor_t *self,int global_enable,char *states,swig_cb *handler){
	int                 rv;
	swig_cb_val         *handler_val = NULL;
	ipmi_sensor_done_cb sensor_cb = NULL;
	ipmi_event_state_t  *st = NULL;

	IPMI_SWIG_C_CB_ENTRY
	if (!global_enable) {
	    if (!states) {
		rv = EINVAL;
		goto out_err;
	    }
	    if (ipmi_sensor_get_event_reading_type(self)
		== IPMI_EVENT_READING_TYPE_THRESHOLD)
	    {
		rv = str_to_threshold_event_state(states, &st);
	    } else {
		rv = str_to_discrete_event_state(states, &st);
	    }
	    if (rv)
		goto out_err;
	}
	if (!nil_swig_cb(handler)) {
	    if (! valid_swig_cb(handler, sensor_rearm_cb)) {
		rv = EINVAL;
		goto out_err;
	    }
	    sensor_cb = sensor_rearm_handler;
	    handler_val = ref_swig_cb(handler, sensor_rearm_cb);
	}
	rv = ipmi_sensor_rearm(self, global_enable, st,
			       sensor_cb, handler_val);
	if (rv && handler_val)
	    deref_swig_cb_val(handler_val);
    out_err:
	if (st)
	    free(st);
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_sensor_t_get_hysteresis(ipmi_sensor_t *self,swig_cb *handler){
	int                       rv;
	swig_cb_val               *handler_val = NULL;
	ipmi_sensor_hysteresis_cb sensor_cb = NULL;

	IPMI_SWIG_C_CB_ENTRY
	if (!valid_swig_cb(handler, sensor_get_hysteresis_cb))
	    rv = EINVAL;
	else {
	    sensor_cb = sensor_get_hysteresis_handler;
	    handler_val = ref_swig_cb(handler, sensor_get_hysteresis_cb);
	    rv = ipmi_sensor_get_hysteresis(self, sensor_cb, handler_val);
	    if (rv)
		deref_swig_cb_val(handler_val);
	}
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_sensor_t_set_hysteresis(ipmi_sensor_t *self,unsigned int positive_hysteresis,unsigned int negative_hysteresis,swig_cb *handler){
	int                 rv;
	swig_cb_val         *handler_val = NULL;
	ipmi_sensor_done_cb sensor_cb = NULL;

	IPMI_SWIG_C_CB_ENTRY
	if (!nil_swig_cb(handler)) {
	    if (! valid_swig_cb(handler, sensor_set_hysteresis_cb)) {
		rv = EINVAL;
		goto out_err;
	    }
	    sensor_cb = sensor_set_hysteresis_handler;
	    handler_val = ref_swig_cb(handler, sensor_set_hysteresis_cb);
	}
	rv = ipmi_sensor_set_hysteresis(self, positive_hysteresis,
					negative_hysteresis,
					sensor_cb, handler_val);
	if (rv && handler_val)
	    deref_swig_cb_val(handler_val);
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN char *ipmi_sensor_t_get_default_thresholds(ipmi_sensor_t *self){
	ipmi_thresholds_t *th = malloc(ipmi_thresholds_size());
	char              *str = NULL;
	int               rv;

	rv = ipmi_get_default_sensor_thresholds(self, th);
	if (!rv) {
	    str = thresholds_to_str(th);
	}
	free(th);
	return str;
    }
SWIGINTERN int ipmi_sensor_t_set_thresholds(ipmi_sensor_t *self,char *thresholds,swig_cb *handler){
	ipmi_thresholds_t   *th = NULL;
	int                 rv;
	swig_cb_val         *handler_val = NULL;
	ipmi_sensor_done_cb sensor_cb = NULL;

	IPMI_SWIG_C_CB_ENTRY
	rv = str_to_thresholds(thresholds, self, &th);
	if (rv)
	    goto out_err;

	if (!nil_swig_cb(handler)) {
	    if (! valid_swig_cb(handler, sensor_set_thresholds_cb)) {
		rv = EINVAL;
		goto out_err_free;
	    }
	    sensor_cb = sensor_set_thresholds_handler;
	    handler_val = ref_swig_cb(handler, sensor_set_thresholds_cb);
	}
	rv = ipmi_sensor_set_thresholds(self, th, sensor_cb, handler_val);
	if (rv && handler_val)
	    deref_swig_cb_val(handler_val);
    out_err_free:
	free(th);
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_sensor_t_get_thresholds(ipmi_sensor_t *self,swig_cb *handler){
	int                       rv;
	swig_cb_val               *handler_val = NULL;
	ipmi_sensor_thresholds_cb sensor_cb = NULL;

	IPMI_SWIG_C_CB_ENTRY
	if (!valid_swig_cb(handler, sensor_get_thresholds_cb))
	    rv = EINVAL;
	else {
	    sensor_cb = sensor_get_thresholds_handler;
	    handler_val = ref_swig_cb(handler, sensor_get_thresholds_cb);
	    rv = ipmi_sensor_get_thresholds(self, sensor_cb, handler_val);
	    if (rv)
		deref_swig_cb_val(handler_val);
	}
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_sensor_t_get_value(ipmi_sensor_t *self,swig_cb *handler){
	int                    rv;
	swig_cb_val            *handler_val = NULL;

	IPMI_SWIG_C_CB_ENTRY
	if (!valid_swig_cb(handler, threshold_reading_cb))
	    rv = EINVAL;
	else {
	    handler_val = ref_swig_cb(handler, threshold_reading_cb);
	    if (ipmi_sensor_get_event_reading_type(self)
		== IPMI_EVENT_READING_TYPE_THRESHOLD)
	    {
		ipmi_sensor_reading_cb sensor_cb;

		sensor_cb = sensor_get_reading_handler;
		rv = ipmi_sensor_get_reading(self, sensor_cb, handler_val);
	    } else {
		ipmi_sensor_states_cb sensor_cb;
		    
		sensor_cb = sensor_get_states_handler;
		rv = ipmi_sensor_get_states(self, sensor_cb, handler_val);
	    }
	    if (rv)
		deref_swig_cb_val(handler_val);
	}
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_sensor_t_get_lun(ipmi_sensor_t *self){
	int lun = 0;
	ipmi_sensor_get_num(self, &lun, NULL);
	return lun;
    }
SWIGINTERN int ipmi_sensor_t_get_num(ipmi_sensor_t *self){
	int num = 0;
	ipmi_sensor_get_num(self, NULL, &num);
	return num;
    }
SWIGINTERN char const *ipmi_sensor_t_get_sensor_type_string(ipmi_sensor_t *self){
	return ipmi_sensor_get_sensor_type_string(self);
    }
SWIGINTERN int ipmi_sensor_t_get_sensor_type(ipmi_sensor_t *self){
	return ipmi_sensor_get_sensor_type(self);
    }
SWIGINTERN char const *ipmi_sensor_t_get_event_reading_type_string(ipmi_sensor_t *self){
	return ipmi_sensor_get_event_reading_type_string(self);
    }
SWIGINTERN int ipmi_sensor_t_get_event_reading_type(ipmi_sensor_t *self){
	return ipmi_sensor_get_event_reading_type(self);
    }
SWIGINTERN char const *ipmi_sensor_t_get_rate_unit_string(ipmi_sensor_t *self){
	return ipmi_sensor_get_rate_unit_string(self);
    }
SWIGINTERN int ipmi_sensor_t_get_rate_unit(ipmi_sensor_t *self){
	return ipmi_sensor_get_rate_unit(self);
    }
SWIGINTERN char const *ipmi_sensor_t_get_base_unit_string(ipmi_sensor_t *self){
	return ipmi_sensor_get_base_unit_string(self);
    }
SWIGINTERN int ipmi_sensor_t_get_base_unit(ipmi_sensor_t *self){
	return ipmi_sensor_get_base_unit(self);
    }
SWIGINTERN char const *ipmi_sensor_t_get_modifier_unit_string(ipmi_sensor_t *self){
	return ipmi_sensor_get_modifier_unit_string(self);
    }
SWIGINTERN int ipmi_sensor_t_get_modifier_unit(ipmi_sensor_t *self){
	return ipmi_sensor_get_modifier_unit(self);
    }
SWIGINTERN int ipmi_sensor_t_get_modifier_unit_use(ipmi_sensor_t *self){
	return ipmi_sensor_get_modifier_unit_use(self);
    }
SWIGINTERN int ipmi_sensor_t_get_percentage(ipmi_sensor_t *self){
	return ipmi_sensor_get_percentage(self);
    }
SWIGINTERN char const *ipmi_sensor_t_reading_name_string(ipmi_sensor_t *self,int offset){
	return ipmi_sensor_reading_name_string(self, offset);
    }
SWIGINTERN int ipmi_sensor_t_get_entity_id(ipmi_sensor_t *self){
	return ipmi_sensor_get_entity_id(self);
    }
SWIGINTERN int ipmi_sensor_t_get_entity_instance(ipmi_sensor_t *self){
	return ipmi_sensor_get_entity_instance(self);
    }
SWIGINTERN ipmi_entity_t *ipmi_sensor_t_get_entity(ipmi_sensor_t *self){
	return ipmi_sensor_get_entity(self);
    }
SWIGINTERN int ipmi_sensor_t_get_sensor_init_scanning(ipmi_sensor_t *self){
	return ipmi_sensor_get_sensor_init_scanning(self);
    }
SWIGINTERN int ipmi_sensor_t_get_sensor_init_events(ipmi_sensor_t *self){
	return ipmi_sensor_get_sensor_init_events(self);
    }
SWIGINTERN int ipmi_sensor_t_get_sensor_init_thresholds(ipmi_sensor_t *self){
	return ipmi_sensor_get_sensor_init_thresholds(self);
    }
SWIGINTERN int ipmi_sensor_t_get_sensor_init_hysteresis(ipmi_sensor_t *self){
	return ipmi_sensor_get_sensor_init_hysteresis(self);
    }
SWIGINTERN int ipmi_sensor_t_get_sensor_init_type(ipmi_sensor_t *self){
	return ipmi_sensor_get_sensor_init_type(self);
    }
SWIGINTERN int ipmi_sensor_t_get_sensor_init_pu_events(ipmi_sensor_t *self){
	return ipmi_sensor_get_sensor_init_pu_events(self);
    }
SWIGINTERN int ipmi_sensor_t_get_sensor_init_pu_scanning(ipmi_sensor_t *self){
	return ipmi_sensor_get_sensor_init_pu_scanning(self);
    }
SWIGINTERN int ipmi_sensor_t_get_ignore_if_no_entity(ipmi_sensor_t *self){
	return ipmi_sensor_get_ignore_if_no_entity(self);
    }
SWIGINTERN int ipmi_sensor_t_get_supports_auto_rearm(ipmi_sensor_t *self){
	return ipmi_sensor_get_supports_auto_rearm(self);
    }
SWIGINTERN int ipmi_sensor_t_get_threshold_access(ipmi_sensor_t *self){
	return ipmi_sensor_get_threshold_access(self);
    }
SWIGINTERN int ipmi_sensor_t_get_hysteresis_support(ipmi_sensor_t *self){
	return ipmi_sensor_get_hysteresis_support(self);
    }
SWIGINTERN int ipmi_sensor_t_get_event_support(ipmi_sensor_t *self){
	return ipmi_sensor_get_event_support(self);
    }
SWIGINTERN int ipmi_sensor_t_get_sensor_direction(ipmi_sensor_t *self){
	return ipmi_sensor_get_sensor_direction(self);
    }
SWIGINTERN int ipmi_sensor_t_is_readable(ipmi_sensor_t *self){
	return ipmi_sensor_get_is_readable(self);
    }
SWIGINTERN int ipmi_sensor_t_threshold_event_supported(ipmi_sensor_t *self,char *event,int *val){
	enum ipmi_thresh_e          thresh;
	enum ipmi_event_value_dir_e value_dir;
	enum ipmi_event_dir_e       dir;
	char                        *s;

	s = threshold_event_from_str(event, strlen(event), &thresh,
				     &value_dir, &dir);
	if (!s)
	    return EINVAL;
	return ipmi_sensor_threshold_event_supported(self,
						     thresh,
						     value_dir,
						     dir,
						     val);
    }
SWIGINTERN int ipmi_sensor_t_threshold_settable(ipmi_sensor_t *self,char *threshold,int *val){
	enum ipmi_thresh_e thresh;
	char               *s;

	s = threshold_from_str(threshold, strlen(threshold), &thresh);
	if (!s)
	    return EINVAL;
	return ipmi_sensor_threshold_settable(self, thresh, val);
    }
SWIGINTERN int ipmi_sensor_t_threshold_readable(ipmi_sensor_t *self,char *threshold,int *val){
	enum ipmi_thresh_e thresh;
	char               *s;

	s = threshold_from_str(threshold, strlen(threshold), &thresh);
	if (!s)
	    return EINVAL;
	return ipmi_sensor_threshold_readable(self, thresh, val);
    }
SWIGINTERN int ipmi_sensor_t_threshold_reading_supported(ipmi_sensor_t *self,char *threshold,int *val){
	enum ipmi_thresh_e thresh;
	char               *s;

	s = threshold_from_str(threshold, strlen(threshold), &thresh);
	if (!s)
	    return EINVAL;
	return ipmi_sensor_threshold_reading_supported(self, thresh, val);
    }
SWIGINTERN int ipmi_sensor_t_discrete_event_supported(ipmi_sensor_t *self,char *event,int *val){
	int                   offset;
	enum ipmi_event_dir_e dir;
	char                  *s;

	s = discrete_event_from_str(event, strlen(event), &offset, &dir);
	if (!s)
	    return EINVAL;
	return ipmi_sensor_discrete_event_supported(self, offset, dir, val);
    }
SWIGINTERN int ipmi_sensor_t_discrete_event_readable(ipmi_sensor_t *self,int offset,int *val){
	return ipmi_sensor_discrete_event_readable(self, offset, val);
    }
SWIGINTERN int ipmi_sensor_t_get_tolerance(ipmi_sensor_t *self,int val,double *tolerance){
	return ipmi_sensor_get_tolerance(self, val, tolerance);
    }
SWIGINTERN int ipmi_sensor_t_get_accuracy(ipmi_sensor_t *self,int val,double *accuracy){
	return ipmi_sensor_get_accuracy(self, val, accuracy);
    }
SWIGINTERN int ipmi_sensor_t_get_normal_min_specified(ipmi_sensor_t *self){
	return ipmi_sensor_get_normal_min_specified(self);
    }
SWIGINTERN int ipmi_sensor_t_get_normal_min(ipmi_sensor_t *self,double *normal_min){
	return ipmi_sensor_get_normal_min(self, normal_min);
    }
SWIGINTERN int ipmi_sensor_t_get_normal_max_specified(ipmi_sensor_t *self){
	return ipmi_sensor_get_normal_max_specified(self);
    }
SWIGINTERN int ipmi_sensor_t_get_normal_max(ipmi_sensor_t *self,double *normal_max){
	return ipmi_sensor_get_normal_max(self, normal_max);
    }
SWIGINTERN int ipmi_sensor_t_get_nominal_reading_specified(ipmi_sensor_t *self){
	return ipmi_sensor_get_nominal_reading_specified(self);
    }
SWIGINTERN int ipmi_sensor_t_get_nominal_reading(ipmi_sensor_t *self,double *nominal_reading){
	return ipmi_sensor_get_nominal_reading(self, nominal_reading);
    }
SWIGINTERN int ipmi_sensor_t_get_sensor_max(ipmi_sensor_t *self,double *sensor_max){
	return ipmi_sensor_get_sensor_max(self, sensor_max);
    }
SWIGINTERN int ipmi_sensor_t_get_sensor_min(ipmi_sensor_t *self,double *sensor_min){
	return ipmi_sensor_get_sensor_min(self, sensor_min);
    }
SWIGINTERN int ipmi_sensor_t_get_oem1(ipmi_sensor_t *self){
	return ipmi_sensor_get_oem1(self);
    }
SWIGINTERN char *ipmi_sensor_t_get_sensor_id(ipmi_sensor_t *self){
	/* FIXME - no unicode handling. */
	int len = ipmi_sensor_get_id_length(self) + 1;
	char *id = malloc(len);
	ipmi_sensor_get_id(self, id, len);
	return id;
    }
SWIGINTERN ipmi_mc_t *ipmi_sensor_t_get_mc(ipmi_sensor_t *self){
	return ipmi_sensor_get_mc(self);
    }
SWIGINTERN void delete_ipmi_sensor_id_t(ipmi_sensor_id_t *self){
	free(self);
    }
SWIGINTERN int ipmi_sensor_id_t_cmp(ipmi_sensor_id_t *self,ipmi_sensor_id_t *other){
	return ipmi_cmp_sensor_id(*self, *other);
    }
SWIGINTERN int ipmi_sensor_id_t_to_sensor(ipmi_sensor_id_t *self,swig_cb *handler){
	int rv;

	IPMI_SWIG_C_CB_ENTRY
	if (! valid_swig_cb(handler, sensor_cb))
	    rv = EINVAL;
	else
	    rv = ipmi_sensor_pointer_cb(*self, handle_sensor_cb,
					get_swig_cb(handler, sensor_cb));
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN char *ipmi_control_t_get_name(ipmi_control_t *self){
	char name[IPMI_CONTROL_NAME_LEN];

	ipmi_control_get_name(self, name, sizeof(name));
	return strdup(name);
    }
SWIGINTERN ipmi_control_id_t *ipmi_control_t_get_id(ipmi_control_t *self){
	ipmi_control_id_t *rv = malloc(sizeof(*rv));
	if (rv)
	    *rv = ipmi_control_convert_to_id(self);
	return rv;
    }
SWIGINTERN char const *ipmi_control_t_get_type_string(ipmi_control_t *self){
	return ipmi_control_get_type_string(self);
    }
SWIGINTERN int ipmi_control_t_get_type(ipmi_control_t *self){
	return ipmi_control_get_type(self);
    }
SWIGINTERN int ipmi_control_t_get_entity_id(ipmi_control_t *self){
	return ipmi_control_get_entity_id(self);
    }
SWIGINTERN int ipmi_control_t_get_entity_instance(ipmi_control_t *self){
	return ipmi_control_get_entity_instance(self);
    }
SWIGINTERN ipmi_entity_t *ipmi_control_t_get_entity(ipmi_control_t *self){
	return ipmi_control_get_entity(self);
    }
SWIGINTERN int ipmi_control_t_is_settable(ipmi_control_t *self){
	return ipmi_control_is_settable(self);
    }
SWIGINTERN int ipmi_control_t_is_readable(ipmi_control_t *self){
	return ipmi_control_is_readable(self);
    }
SWIGINTERN int ipmi_control_t_get_ignore_if_no_entity(ipmi_control_t *self){
	return ipmi_control_get_ignore_if_no_entity(self);
    }
SWIGINTERN char *ipmi_control_t_get_control_id(ipmi_control_t *self){
	/* FIXME - no unicode handling. */
	int len = ipmi_control_get_id_length(self) + 1;
	char *id = malloc(len);
	ipmi_control_get_id(self, id, len);
	return id;
    }
SWIGINTERN int ipmi_control_t_has_events(ipmi_control_t *self){
	return ipmi_control_has_events(self);
    }
SWIGINTERN int ipmi_control_t_get_num_vals(ipmi_control_t *self){
	return ipmi_control_get_num_vals(self);
    }
SWIGINTERN int ipmi_control_t_set_val(ipmi_control_t *self,intarray val,swig_cb *handler){
	swig_cb_val        *handler_val = NULL;
	ipmi_control_op_cb done = NULL;
	int                rv;

	IPMI_SWIG_C_CB_ENTRY
	if (val.len != ipmi_control_get_num_vals(self)) {
	    rv = EINVAL;
	    goto out_err;
	}

	if (!nil_swig_cb(handler)) {
	    if (! valid_swig_cb(handler, control_set_val_cb)) {
		rv = EINVAL;
		goto out_err;
	    }
	    handler_val = ref_swig_cb(handler, control_set_val_cb);
	    done = control_val_set_handler;
	}
	rv = ipmi_control_set_val(self, val.val, done, handler_val);
	if (rv && handler_val)
	    deref_swig_cb_val(handler_val);
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_control_t_get_val(ipmi_control_t *self,swig_cb *handler){
	swig_cb_val         *handler_val = NULL;
	ipmi_control_val_cb done = NULL;
	int                 rv;

	IPMI_SWIG_C_CB_ENTRY
	if (!valid_swig_cb(handler, control_get_val_cb))
	    rv = EINVAL;
	else {
	    handler_val = ref_swig_cb(handler, control_get_val_cb);
	    done = control_val_get_handler;

	    rv = ipmi_control_get_val(self, done, handler_val);
	    if (rv && handler_val)
		deref_swig_cb_val(handler_val);
	}
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_control_t_add_event_handler(ipmi_control_t *self,swig_cb *handler){
	ipmi_control_add_val_event_handler_cl
	    (self, control_val_event_handler_cl, NULL);
	 	int         rv;							 	swig_cb_val *handler_val;					 	IPMI_SWIG_C_CB_ENTRY						 	if (! valid_swig_cb(handler, control_event_val_cb))				 	    rv = EINVAL;						 	else {								 	    handler_val = ref_swig_cb(handler, control_event_val_cb);			 	    rv = ipmi_control_add_val_event_handler		 		 (self, control_val_event_handler, handler_val);	 	    if (rv)							 		deref_swig_cb_val(handler_val);				 	}								 	IPMI_SWIG_C_CB_EXIT						 	return rv;;
    }
SWIGINTERN int ipmi_control_t_remove_event_handler(ipmi_control_t *self,swig_cb *handler){
	 	int         rv;							 	swig_cb_val *handler_val;					 	IPMI_SWIG_C_CB_ENTRY						 	if (! valid_swig_cb(handler, control_event_val_cb))				 	    rv = EINVAL;						 	else {								 	    handler_val = get_swig_cb(handler, control_event_val_cb);			 	    rv = ipmi_control_remove_val_event_handler		 		 (self, control_val_event_handler, handler_val);	 	    if (!rv)							 		deref_swig_cb_val(handler_val);				 	}								 	IPMI_SWIG_C_CB_EXIT						 	return rv;;
    }
SWIGINTERN int ipmi_control_t_light_set_with_setting(ipmi_control_t *self){
	return ipmi_control_light_set_with_setting(self);
    }
SWIGINTERN int ipmi_control_t_light_is_color_supported(ipmi_control_t *self,int light_num,int color){
	return ipmi_control_light_is_color_sup(self, light_num, color);
    }
SWIGINTERN int ipmi_control_t_light_has_local_control(ipmi_control_t *self,int light_num){
	return ipmi_control_light_has_loc_ctrl(self, light_num);
    }
SWIGINTERN int ipmi_control_t_set_light(ipmi_control_t *self,char *settings,swig_cb *handler){
	ipmi_light_setting_t *s;
	int                  rv;
	swig_cb_val          *handler_val = NULL;
	ipmi_control_op_cb   done = NULL;

	IPMI_SWIG_C_CB_ENTRY
	rv = str_to_light_setting(settings, &s);
	if (rv)
	    goto out_err;

	if (ipmi_light_setting_get_count(s)
	    != ipmi_control_get_num_vals(self))
	{
	    free(s);
	    rv = EINVAL;
	    goto out_err;
	}

	if (!nil_swig_cb(handler)) {
	    if (! valid_swig_cb(handler, control_set_val_cb)) {
		rv = EINVAL;
		goto out_err;
	    }
	    handler_val = ref_swig_cb(handler, control_set_val_cb);
	    done = control_val_set_handler;
	}
	rv = ipmi_control_set_light(self, s, done, handler_val);
	if (rv && handler_val)
	    deref_swig_cb_val(handler_val);
	ipmi_free_light_settings(s);
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_control_t_get_light(ipmi_control_t *self,swig_cb *handler){
	swig_cb_val            *handler_val = NULL;
	ipmi_light_settings_cb done = NULL;
	int                    rv;

	IPMI_SWIG_C_CB_ENTRY
	if (! valid_swig_cb(handler, control_get_light_cb))
	    rv = EINVAL;
	else {
	    handler_val = ref_swig_cb(handler, control_get_light_cb);
	    done = control_val_get_light_handler;

	    rv = ipmi_control_get_light(self, done, handler_val);
	    if (rv && handler_val)
		deref_swig_cb_val(handler_val);
	}
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_control_t_get_num_light_values(ipmi_control_t *self,int light){
	return ipmi_control_get_num_light_values(self, light);
    }
SWIGINTERN int ipmi_control_t_get_num_light_transitions(ipmi_control_t *self,int light,int value){
	return ipmi_control_get_num_light_transitions(self, light, value);
    }
SWIGINTERN int ipmi_control_t_get_light_color(ipmi_control_t *self,int light,int value,int transition){
	return ipmi_control_get_light_color(self, light, value, transition);
    }
SWIGINTERN int ipmi_control_t_get_light_color_time(ipmi_control_t *self,int light,int value,int transition){
	return ipmi_control_get_light_color_time(self, light, value,
						 transition);
    }
SWIGINTERN int ipmi_control_t_identifier_set_val(ipmi_control_t *self,intarray val,swig_cb *handler){
	swig_cb_val        *handler_val = NULL;
	ipmi_control_op_cb done = NULL;
	int                rv;
	unsigned char      *data;
	int                i;

	IPMI_SWIG_C_CB_ENTRY
	data = malloc(val.len);
	if (!data) {
	    rv = ENOMEM;
	    goto out_err;
	}
	for (i=0; i<val.len; i++)
	    data[i] = val.val[i];

	if (!nil_swig_cb(handler)) {
	    if (! valid_swig_cb(handler, control_set_val_cb)) {
		free(data);
		rv = EINVAL;
		goto out_err;
	    }
	    handler_val = ref_swig_cb(handler, control_set_val_cb);
	    done = control_val_set_handler;
	}
	rv = ipmi_control_identifier_set_val(self, data, val.len,
					     done, handler_val);
	if (rv && handler_val)
	    deref_swig_cb_val(handler_val);
	free(data);
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_control_t_identifier_get_val(ipmi_control_t *self,swig_cb *handler){
	swig_cb_val                    *handler_val = NULL;
	ipmi_control_identifier_val_cb done = NULL;
	int                            rv;

	IPMI_SWIG_C_CB_ENTRY
	if (! valid_swig_cb(handler, control_get_id_cb))
	    rv = EINVAL;
	else {
	    handler_val = ref_swig_cb(handler, control_get_id_cb);
	    done = control_val_get_id_handler;

	    rv = ipmi_control_identifier_get_val(self, done, handler_val);
	    if (rv && handler_val)
		deref_swig_cb_val(handler_val);
	}
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_control_t_identifier_get_max_length(ipmi_control_t *self){
	return ipmi_control_identifier_get_max_length(self);
    }
SWIGINTERN void delete_ipmi_control_id_t(ipmi_control_id_t *self){
	free(self);
    }
SWIGINTERN int ipmi_control_id_t_cmp(ipmi_control_id_t *self,ipmi_control_id_t *other){
	return ipmi_cmp_control_id(*self, *other);
    }
SWIGINTERN int ipmi_control_id_t_to_control(ipmi_control_id_t *self,swig_cb *handler){
	int rv;
	IPMI_SWIG_C_CB_ENTRY
	if (! valid_swig_cb(handler, control_cb))
	    rv = EINVAL;
	else
	    rv = ipmi_control_pointer_cb(*self, handle_control_cb,
					 get_swig_cb(handler, control_cb));
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN void delete_ipmi_channel_info_t(ipmi_channel_info_t *self){
	ipmi_channel_info_free(self);
    }
SWIGINTERN ipmi_channel_info_t *ipmi_channel_info_t_copy(ipmi_channel_info_t *self){
	return ipmi_channel_info_copy(self);
    }
SWIGINTERN int ipmi_channel_info_t_get_channel(ipmi_channel_info_t *self,int *channel){
	unsigned int val;
	int rv = ipmi_channel_info_get_channel(self, &val);
	*channel = val;
	return rv;
    }
SWIGINTERN int ipmi_channel_info_t_get_medium(ipmi_channel_info_t *self,int *medium){
	unsigned int val;
	int rv = ipmi_channel_info_get_medium(self, &val);
	*medium = val;
	return rv;
    }
SWIGINTERN int ipmi_channel_info_t_get_protocol_type(ipmi_channel_info_t *self,int *prot_type){
	unsigned int val;
	int rv = ipmi_channel_info_get_protocol_type(self, &val);
	*prot_type = val;
	return rv;
    }
SWIGINTERN int ipmi_channel_info_t_get_session_support(ipmi_channel_info_t *self,int *sup){
	unsigned int val;
	int rv = ipmi_channel_info_get_session_support(self, &val);
	*sup = val;
	return rv;
    }
SWIGINTERN char *ipmi_channel_info_t_get_vendor_id(ipmi_channel_info_t *self){
	unsigned char data[3];
	int           rv;
	char          *rdata = malloc(15);

	if (!rdata)
	    return NULL;
	rv = ipmi_channel_info_get_vendor_id(self, data);
	if (rv)
	    return NULL;
	sprintf(rdata, "0x%2.2x 0x%2.2x 0x%2.2x", data[0], data[1], data[2]);
	return rdata;
    }
SWIGINTERN char *ipmi_channel_info_t_get_aux_info(ipmi_channel_info_t *self){
	unsigned char data[2];
	int           rv;
	char          *rdata = malloc(10);

	if (!rdata)
	    return NULL;
	rv = ipmi_channel_info_get_aux_info(self, data);
	if (rv)
	    return NULL;
	sprintf(rdata, "0x%2.2x 0x%2.2x", data[0], data[1]);
	return rdata;
    }
SWIGINTERN void delete_ipmi_channel_access_t(ipmi_channel_access_t *self){
	ipmi_channel_access_free(self);
    }
SWIGINTERN ipmi_channel_access_t *ipmi_channel_access_t_copy(ipmi_channel_access_t *self){
	return ipmi_channel_access_copy(self);
    }
SWIGINTERN int ipmi_channel_access_t_get_channel(ipmi_channel_access_t *self,int *channel){
	unsigned int val;
	int rv = ipmi_channel_access_get_channel(self, &val);
	*channel = val;
	return rv;
    }
SWIGINTERN int ipmi_channel_access_t_get_alerting_enabled(ipmi_channel_access_t *self,int *enab){
	unsigned int val;
	int rv = ipmi_channel_access_get_alerting_enabled(self, &val);
	*enab = val;
	return rv;
    }
SWIGINTERN int ipmi_channel_access_t_set_alerting_enabled(ipmi_channel_access_t *self,int enab){
	return ipmi_channel_access_set_alerting_enabled(self, enab);
    }
SWIGINTERN int ipmi_channel_access_t_get_per_msg_auth(ipmi_channel_access_t *self,int *msg_auth){
	unsigned int val;
	int rv = ipmi_channel_access_get_per_msg_auth(self, &val);
	*msg_auth = val;
	return rv;
    }
SWIGINTERN int ipmi_channel_access_t_set_per_msg_auth(ipmi_channel_access_t *self,int msg_auth){
	return ipmi_channel_access_set_per_msg_auth(self, msg_auth);
    }
SWIGINTERN int ipmi_channel_access_t_get_user_auth(ipmi_channel_access_t *self,int *user_auth){
	unsigned int val;
	int rv = ipmi_channel_access_get_user_auth(self, &val);
	*user_auth = val;
	return rv;
    }
SWIGINTERN int ipmi_channel_access_t_set_user_auth(ipmi_channel_access_t *self,int user_auth){
	return ipmi_channel_access_set_user_auth(self, user_auth);
    }
SWIGINTERN int ipmi_channel_access_t_get_access_mode(ipmi_channel_access_t *self,int *access_mode){
	unsigned int val;
	int rv = ipmi_channel_access_get_access_mode(self, &val);
	*access_mode = val;
	return rv;
    }
SWIGINTERN int ipmi_channel_access_t_set_access_mode(ipmi_channel_access_t *self,int access_mode){
	return ipmi_channel_access_set_access_mode(self, access_mode);
    }
SWIGINTERN int ipmi_channel_access_t_get_privilege_limit(ipmi_channel_access_t *self,int *priv_limit){
	unsigned int val;
	int rv = ipmi_channel_access_get_priv_limit(self, &val);
	*priv_limit = val;
	return rv;
    }
SWIGINTERN int ipmi_channel_access_t_set_privilege_limit(ipmi_channel_access_t *self,int priv_limit){
	return ipmi_channel_access_set_priv_limit(self, priv_limit);
    }
SWIGINTERN int ipmi_channel_access_t_setall(ipmi_channel_access_t *self){
	return ipmi_channel_access_setall(self);
    }
SWIGINTERN void delete_ipmi_user_t(ipmi_user_t *self){
	ipmi_user_free(self);
    }
SWIGINTERN ipmi_user_t *ipmi_user_t_copy(ipmi_user_t *self){
	return ipmi_user_copy(self);
    }
SWIGINTERN int ipmi_user_t_get_channel(ipmi_user_t *self,int *channel){
	unsigned int val;
	int rv = ipmi_user_get_channel(self, &val);
	*channel = val;
	return rv;
    }
SWIGINTERN int ipmi_user_t_get_num(ipmi_user_t *self,int *num){
	unsigned int val;
	int rv = ipmi_user_get_num(self, &val);
	*num = val;
	return rv;
    }
SWIGINTERN int ipmi_user_t_set_num(ipmi_user_t *self,int num){
	return ipmi_user_set_num(self, num);
    }
SWIGINTERN char *ipmi_user_t_get_name(ipmi_user_t *self){
	unsigned int len;
	int rv;
	char *name;

	rv = ipmi_user_get_name_len(self, &len);
	if (rv)
	    return NULL;
	name = malloc(len+1);
	if (!name)
	    return NULL;
	rv = ipmi_user_get_name(self, name, &len);
	if (rv) {
	    free(name);
	    return NULL;
	}
	return name;
    }
SWIGINTERN int ipmi_user_t_set_name(ipmi_user_t *self,char *name){
	return ipmi_user_set_name(self, name, strlen(name));
    }
SWIGINTERN int ipmi_user_t_set_password(ipmi_user_t *self,char *pw){
	return ipmi_user_set_password(self, pw, strlen(pw));
    }
SWIGINTERN int ipmi_user_t_set_password2(ipmi_user_t *self,char *pw){
	return ipmi_user_set_password2(self, pw, strlen(pw));
    }
SWIGINTERN int ipmi_user_t_set_password_auto(ipmi_user_t *self,char *pw){
	if (strlen(pw) > 16)
	    return ipmi_user_set_password2(self, pw, strlen(pw));
	else
	    return ipmi_user_set_password(self, pw, strlen(pw));
    }
SWIGINTERN int ipmi_user_t_get_enable(ipmi_user_t *self,int *enable){
	unsigned int val;
	int rv = ipmi_user_get_enable(self, &val);
	*enable = val;
	return rv;
    }
SWIGINTERN int ipmi_user_t_set_enable(ipmi_user_t *self,int val){
	return ipmi_user_set_enable(self, val);
    }
SWIGINTERN int ipmi_user_t_get_link_auth_enabled(ipmi_user_t *self,int *enable){
	unsigned int val;
	int rv = ipmi_user_get_link_auth_enabled(self, &val);
	*enable = val;
	return rv;
    }
SWIGINTERN int ipmi_user_t_set_link_auth_enabled(ipmi_user_t *self,int val){
	return ipmi_user_set_link_auth_enabled(self, val);
    }
SWIGINTERN int ipmi_user_t_get_msg_auth_enabled(ipmi_user_t *self,int *enable){
	unsigned int val;
	int rv = ipmi_user_get_msg_auth_enabled(self, &val);
	*enable = val;
	return rv;
    }
SWIGINTERN int ipmi_user_t_set_msg_auth_enabled(ipmi_user_t *self,int val){
	return ipmi_user_set_msg_auth_enabled(self, val);
    }
SWIGINTERN int ipmi_user_t_get_access_cb_only(ipmi_user_t *self,int *cb){
	unsigned int val;
	int rv = ipmi_user_get_access_cb_only(self, &val);
	*cb = val;
	return rv;
    }
SWIGINTERN int ipmi_user_t_set_access_cb_only(ipmi_user_t *self,int val){
	return ipmi_user_set_access_cb_only(self, val);
    }
SWIGINTERN int ipmi_user_t_get_privilege_limit(ipmi_user_t *self,int *limit){
	unsigned int val;
	int rv = ipmi_user_get_privilege_limit(self, &val);
	*limit = val;
	return rv;
    }
SWIGINTERN int ipmi_user_t_set_privilege_limit(ipmi_user_t *self,int val){
	return ipmi_user_set_privilege_limit(self, val);
    }
SWIGINTERN int ipmi_user_t_get_session_limit(ipmi_user_t *self,int *limit){
	unsigned int val;
	int rv = ipmi_user_get_session_limit(self, &val);
	*limit = val;
	return rv;
    }
SWIGINTERN int ipmi_user_t_set_session_limit(ipmi_user_t *self,int val){
	return ipmi_user_set_session_limit(self, val);
    }
SWIGINTERN int ipmi_user_t_set_all(ipmi_user_t *self){
	return ipmi_user_set_all(self);
    }
SWIGINTERN void delete_ipmi_lanparm_t(ipmi_lanparm_t *self){
	ipmi_lanparm_deref(self);
    }
SWIGINTERN ipmi_mcid_t *ipmi_lanparm_t_get_mc_id(ipmi_lanparm_t *self){
	ipmi_mcid_t *rv = malloc(sizeof(*rv));
	if (rv)
	    *rv = ipmi_lanparm_get_mc_id(self);
	return rv;
    }
SWIGINTERN int ipmi_lanparm_t_get_channel(ipmi_lanparm_t *self){
	return ipmi_lanparm_get_channel(self);
    }
SWIGINTERN int ipmi_lanparm_t_get_parm(ipmi_lanparm_t *self,int parm,int set,int block,swig_cb *handler){
	int         rv;
	swig_cb_val *handler_val;

	IPMI_SWIG_C_CB_ENTRY
	if (!valid_swig_cb(handler, lanparm_got_parm_cb))
	    rv = EINVAL;
	else {
	    handler_val = ref_swig_cb(handler, lanparm_got_parm_cb);
	    ipmi_lanparm_ref(self);
	    rv = ipmi_lanparm_get_parm(self, parm, set, block,
				       lanparm_get_parm, handler_val);
	    if (rv) {
		ipmi_lanparm_deref(self);
		deref_swig_cb_val(handler_val);
	    }
	}
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_lanparm_t_set_parm(ipmi_lanparm_t *self,int parm,char *value,swig_cb *handler){
	int                  rv;
	swig_cb_val          *handler_val = NULL;
	unsigned char        *data;
	unsigned int         length;

	IPMI_SWIG_C_CB_ENTRY
	data = parse_raw_str_data(value, &length);
	if (!data) {
	    rv = ENOMEM;
	    goto out_err;
	}

	if (!nil_swig_cb(handler)) {
	    if (! valid_swig_cb(handler, lanparm_set_parm_cb)) {
		free(data);
		rv = EINVAL;
		goto out_err;
	    }
	    handler_val = ref_swig_cb(handler, lanparm_set_parm_cb);
	}

	if (handler_val)
	    ipmi_lanparm_ref(self);
	rv = ipmi_lanparm_set_parm(self, parm, data, length,
				   lanparm_set_parm, handler_val);
	free(data);
	if (rv && handler_val) {
	    ipmi_lanparm_deref(self);
	    deref_swig_cb_val(handler_val);
	}
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_lanparm_t_set_parm_array(ipmi_lanparm_t *self,int parm,intarray value,swig_cb *handler){
	int                  rv;
	swig_cb_val          *handler_val = NULL;
	unsigned char        *data;
	unsigned int         length = value.len;

	IPMI_SWIG_C_CB_ENTRY
	if (length == 0)
	    data = malloc(1);
	else
	    data = malloc(length);
	if (!data) {
	    rv = ENOMEM;
	    goto out_err;
	}
	parse_ipmi_data(value, data, length, &length);

	if (!nil_swig_cb(handler)) {
	    if (! valid_swig_cb(handler, lanparm_set_parm_cb)) {
		free(data);
		rv = EINVAL;
		goto out_err;
	    }
	    handler_val = ref_swig_cb(handler, lanparm_set_parm_cb);
	}

	if (handler_val)
	    ipmi_lanparm_ref(self);
	rv = ipmi_lanparm_set_parm(self, parm, data, length,
				   lanparm_set_parm, handler_val);
	free(data);
	if (rv && handler_val) {
	    ipmi_lanparm_deref(self);
	    deref_swig_cb_val(handler_val);
	}
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_lanparm_t_get_config(ipmi_lanparm_t *self,swig_cb *handler){
	int                  rv;
	swig_cb_val          *handler_val = NULL;

	IPMI_SWIG_C_CB_ENTRY
	if (!valid_swig_cb(handler, lanparm_got_config_cb))
	    rv = EINVAL;
	else {
	    handler_val = ref_swig_cb(handler, lanparm_got_config_cb);

	    ipmi_lanparm_ref(self);
	    rv = ipmi_lan_get_config(self, lanparm_get_config, handler_val);
	    if (rv) {
		ipmi_lanparm_deref(self);
		deref_swig_cb_val(handler_val);
	    }
	}
	IPMI_SWIG_C_CB_EXIT
	return rv;
	
    }
SWIGINTERN int ipmi_lanparm_t_set_config(ipmi_lanparm_t *self,ipmi_lan_config_t *config,swig_cb *handler){
	int                  rv;
	swig_cb_val          *handler_val = NULL;

	IPMI_SWIG_C_CB_ENTRY
	if (!nil_swig_cb(handler)) {
	    if (! valid_swig_cb(handler, lanparm_set_config_cb)) {
		rv = EINVAL;
		goto out_err;
	    }
	    handler_val = ref_swig_cb(handler, lanparm_set_config_cb);
	}

	if (handler_val)
	    ipmi_lanparm_ref(self);
	rv = ipmi_lan_set_config(self, config,
				 lanparm_set_config, handler_val);
	if (rv && handler_val) {
	    ipmi_lanparm_deref(self);
	    deref_swig_cb_val(handler_val);
	}
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_lanparm_t_clear_lock(ipmi_lanparm_t *self,ipmi_lan_config_t *config,swig_cb *handler){
	int                  rv;
	swig_cb_val          *handler_val = NULL;

	IPMI_SWIG_C_CB_ENTRY
	if (!nil_swig_cb(handler)) {
	    if (! valid_swig_cb(handler, lanparm_clear_lock_cb)) {
		rv = EINVAL;
		goto out_err;
	    }
	    handler_val = ref_swig_cb(handler, lanparm_clear_lock_cb);
	}

	if (handler_val)
	    ipmi_lanparm_ref(self);
	rv = ipmi_lan_clear_lock(self, config,
				 lanparm_clear_lock, handler_val);
	if (rv && handler_val) {
	    ipmi_lanparm_deref(self);
	    deref_swig_cb_val(handler_val);
	}
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN void delete_ipmi_lan_config_t(ipmi_lan_config_t *self){
	ipmi_lan_free_config(self);
    }
SWIGINTERN char *ipmi_lan_config_t_get_val(ipmi_lan_config_t *self,int parm,int *index){
	enum ipmi_lanconf_val_type_e valtype;
	unsigned int      ival = 0;
	unsigned char     *dval = NULL;
	unsigned int      dval_len = 0;
	const char        *name;
	char              dummy[1];
	char              *str = NULL, *s;
	int               rv;
	int               i;
	unsigned int      len;

	rv = ipmi_lanconfig_get_val(self, parm, &name, index, &valtype,
				    &ival, &dval, &dval_len);
	if ((rv == ENOSYS) || (rv == E2BIG))
	    return strdup(name);
	else if (rv)
	    return NULL;

	switch (valtype) {
	case IPMI_LANCONFIG_INT:
	    len = snprintf(dummy, 1, "%s integer %d", name, ival);
	    str = malloc(len + 1);
	    sprintf(str, "%s integer %d", name, ival);
	    break;
	    
	case IPMI_LANCONFIG_BOOL:
	    len = snprintf(dummy, 1, "%s bool %s", name,
			   ival ? "true" : "false");
	    str = malloc(len + 1);
	    sprintf(str, "%s bool %s", name, 
		    ival ? "true" : "false");
	    break;
	    
	case IPMI_LANCONFIG_DATA:
	    len = snprintf(dummy, 1, "%s data", name);
	    len += dval_len * 5;
	    str = malloc(len + 1);
	    s = str;
	    s += sprintf(s, "%s data", name);
	    for (i=0; i<dval_len; i++)
		s += sprintf(s, " 0x%2.2x", dval[i]);
	    break;

	case IPMI_LANCONFIG_IP:
	    len = snprintf(dummy, 1, "%s ip", name);
	    len += 4 * 4; /* worst case */
	    str = malloc(len + 1);
	    sprintf(str, "%s ip %d.%d.%d.%d", name,
		    dval[0], dval[1], dval[2], dval[3]);
	    break;

	case IPMI_LANCONFIG_MAC:
	    len = snprintf(dummy, 1, "%s mac", name);
	    len += 6 * 3;
	    str = malloc(len + 1);
	    s = str;
	    s += sprintf(s, "%s mac ", name);
	    for (i=0; i<5; i++)
		s += sprintf(s, "%2.2x:", dval[i]);
	    sprintf(s, "%2.2x", dval[i]);
	    break;
	}

	if (dval)
	    ipmi_lanconfig_data_free(dval);

	return str;
    }
SWIGINTERN int ipmi_lan_config_t_set_val(ipmi_lan_config_t *self,int parm,int idx,char *type,char *value){
	enum ipmi_lanconf_val_type_e valtype;
	int               rv;
	unsigned int      ival = 0;
	unsigned char     *dval = NULL;
	unsigned int      dval_len = 0;

	rv = ipmi_lanconfig_parm_to_type(parm, &valtype);
	if (rv)
	    return rv;

	switch (valtype) {
	case IPMI_LANCONFIG_INT:
	{
	    char *endstr;
	    if (strcmp(type, "integer") != 0)
		return EINVAL;
	    if (!value)
		return EINVAL;
	    if (*value == '\0')
		return EINVAL;
	    ival = strtol(value, &endstr, 0);
	    if (*endstr != '\0')
		return EINVAL;
	    break;
	}
	    
	case IPMI_LANCONFIG_BOOL:
	    if (strcmp(type, "bool") != 0)
		return EINVAL;
	    if (!value)
		return EINVAL;
	    if (strcasecmp(value, "true") == 0)
		ival = 1;
	    else if (strcasecmp(value, "false") == 0)
		ival = 0;
	    else if (strcasecmp(value, "on") == 0)
		ival = 1;
	    else if (strcasecmp(value, "off") == 0)
		ival = 0;
	    else
		return EINVAL;
	    break;
	    
	case IPMI_LANCONFIG_DATA:
	    if (strcmp(type, "data") != 0)
		return EINVAL;
	    if (!value)
		return EINVAL;
	    dval = parse_raw_str_data(value, &dval_len);
	    if (!dval)
		return ENOMEM;
	    break;

	case IPMI_LANCONFIG_IP:
	    {
		struct in_addr addr;
		if (strcmp(type, "ip") != 0)
		    return EINVAL;
		rv = parse_ip_addr(value, &addr);
		if (rv)
		    return rv;
		dval = malloc(4);
		memcpy(dval, &addr.s_addr, 4);
		dval_len = 4;
	    }
	    break;

	case IPMI_LANCONFIG_MAC:
	    if (strcmp(type, "mac") != 0)
		return EINVAL;
	    dval = malloc(6);
	    rv = parse_mac_addr(value, dval);
	    if (rv) {
		free(dval);
		return rv;
	    }
	    dval_len = 6;
	    break;
	}

	rv = ipmi_lanconfig_set_val(self, parm, idx, ival, dval, dval_len);
	if (dval)
	    free(dval);
	return rv;
    }
SWIGINTERN void delete_ipmi_pef_t(ipmi_pef_t *self){
	ipmi_pef_deref(self);
    }
SWIGINTERN ipmi_mcid_t *ipmi_pef_t_get_mc_id(ipmi_pef_t *self){
	ipmi_mcid_t *rv = malloc(sizeof(*rv));
	if (rv)
	    *rv = ipmi_pef_get_mc(self);
	return rv;
    }
SWIGINTERN int ipmi_pef_t_get_parm(ipmi_pef_t *self,int parm,int set,int block,swig_cb *handler){
	int         rv;
	swig_cb_val *handler_val;

	IPMI_SWIG_C_CB_ENTRY
	if (!valid_swig_cb(handler, pef_got_parm_cb))
	    rv = EINVAL;
	else {
	    handler_val = ref_swig_cb(handler, pef_got_parm_cb);
	    ipmi_pef_ref(self);
	    rv = ipmi_pef_get_parm(self, parm, set, block, pef_get_parm,
				   handler_val);
	    if (rv) {
		ipmi_pef_deref(self);
		deref_swig_cb_val(handler_val);
	    }
	}
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_pef_t_set_parm(ipmi_pef_t *self,int parm,char *value,swig_cb *handler){
	int                  rv;
	swig_cb_val          *handler_val = NULL;
	unsigned char        *data;
	unsigned int         length;

	IPMI_SWIG_C_CB_ENTRY
	data = parse_raw_str_data(value, &length);
	if (!data) {
	    rv = ENOMEM;
	    goto out_err;
	}

	if (!nil_swig_cb(handler)) {
	    if (! valid_swig_cb(handler, pef_set_parm_cb)) {
		free(data);
		rv = EINVAL;
		goto out_err;
	    }
	    handler_val = ref_swig_cb(handler, pef_set_parm_cb);
	}

	if (handler_val)
	    ipmi_pef_ref(self);
	rv = ipmi_pef_set_parm(self, parm, data, length,
			       pef_set_parm, handler_val);
	free(data);
	if (rv && handler_val) {
	    ipmi_pef_deref(self);
	    deref_swig_cb_val(handler_val);
	}
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_pef_t_set_parm_array(ipmi_pef_t *self,int parm,intarray value,swig_cb *handler){
	int                  rv;
	swig_cb_val          *handler_val = NULL;
	unsigned char        *data;
	unsigned int         length = value.len;

	IPMI_SWIG_C_CB_ENTRY
	if (length == 0)
	    data = malloc(1);
	else
	    data = malloc(length);
	if (!data) {
	    rv = ENOMEM;
	    goto out_err;
	}
	parse_ipmi_data(value, data, length, &length);

	if (!nil_swig_cb(handler)) {
	    if (! valid_swig_cb(handler, pef_set_parm_cb)) {
		free(data);
		rv = EINVAL;
		goto out_err;
	    }
	    handler_val = ref_swig_cb(handler, pef_set_parm_cb);
	}

	if (handler_val)
	    ipmi_pef_ref(self);
	rv = ipmi_pef_set_parm(self, parm, data, length,
			       pef_set_parm, handler_val);
	free(data);
	if (rv && handler_val) {
	    ipmi_pef_deref(self);
	    deref_swig_cb_val(handler_val);
	}
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_pef_t_get_config(ipmi_pef_t *self,swig_cb *handler){
	int                  rv;
	swig_cb_val          *handler_val = NULL;

	IPMI_SWIG_C_CB_ENTRY
	if (!valid_swig_cb(handler, pef_got_config_cb))
	    rv = EINVAL;
	else {
	    handler_val = ref_swig_cb(handler, pef_got_config_cb);

	    ipmi_pef_ref(self);
	    rv = ipmi_pef_get_config(self, pef_get_config, handler_val);
	    if (rv) {
		ipmi_pef_deref(self);
		deref_swig_cb_val(handler_val);
	    }
	}
	IPMI_SWIG_C_CB_EXIT
	return rv;
	
    }
SWIGINTERN int ipmi_pef_t_set_config(ipmi_pef_t *self,ipmi_pef_config_t *config,swig_cb *handler){
	int                  rv;
	swig_cb_val          *handler_val = NULL;
	ipmi_pef_done_cb done = NULL;

	IPMI_SWIG_C_CB_ENTRY
	if (!nil_swig_cb(handler)) {
	    if (! valid_swig_cb(handler, pef_set_config_cb)) {
		rv = EINVAL;
		goto out_err;
	    }
	    done = pef_set_config;
	    handler_val = ref_swig_cb(handler, pef_set_config_cb);
	}

	if (handler_val)
	    ipmi_pef_ref(self);
	rv = ipmi_pef_set_config(self, config, done, handler_val);
	if (rv && handler_val) {
	    ipmi_pef_deref(self);
	    deref_swig_cb_val(handler_val);
	}
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_pef_t_clear_lock(ipmi_pef_t *self,ipmi_pef_config_t *config,swig_cb *handler){
	int         rv;
	swig_cb_val *handler_val = NULL;

	IPMI_SWIG_C_CB_ENTRY
	if (!nil_swig_cb(handler)) {
	    if (! valid_swig_cb(handler, pef_clear_lock_cb)) {
		rv = EINVAL;
		goto out_err;
	    }
	    handler_val = ref_swig_cb(handler, pef_clear_lock_cb);
	}

	if (handler_val)
	    ipmi_pef_ref(self);
	rv = ipmi_pef_clear_lock(self, config, pef_clear_lock, handler_val);
	if (rv && handler_val) {
	    ipmi_pef_deref(self);
	    deref_swig_cb_val(handler_val);
	}
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN void delete_ipmi_pef_config_t(ipmi_pef_config_t *self){
	ipmi_pef_free_config(self);
    }
SWIGINTERN char *ipmi_pef_config_t_get_val(ipmi_pef_config_t *self,int parm,int *index){
	enum ipmi_pefconf_val_type_e valtype;
	unsigned int      ival = 0;
	unsigned char     *dval = NULL;
	unsigned int      dval_len = 0;
	const char        *name;
	char              dummy[1];
	char              *str = NULL, *s;
	int               rv;
	int               i;
	unsigned int      len;

	rv = ipmi_pefconfig_get_val(self, parm, &name, index, &valtype,
				    &ival, &dval, &dval_len);
	if ((rv == ENOSYS) || (rv == E2BIG))
	    return strdup(name);
	else if (rv)
	    return NULL;

	switch (valtype) {
	case IPMI_PEFCONFIG_INT:
	    len = snprintf(dummy, 1, "%s integer %d", name, ival);
	    str = malloc(len + 1);
	    sprintf(str, "%s integer %d", name, ival);
	    break;
	    
	case IPMI_PEFCONFIG_BOOL:
	    len = snprintf(dummy, 1, "%s bool %s", name,
			   ival ? "true" : "false");
	    str = malloc(len + 1);
	    sprintf(str, "%s bool %s", name, 
		    ival ? "true" : "false");
	    break;
	    
	case IPMI_PEFCONFIG_DATA:
	    len = snprintf(dummy, 1, "%s data", name);
	    len += dval_len * 5;
	    str = malloc(len + 1);
	    s = str;
	    s += sprintf(s, "%s data", name);
	    for (i=0; i<dval_len; i++)
		s += sprintf(s, " 0x%2.2x", dval[i]);
	    break;

	case IPMI_PEFCONFIG_STR:
	    len = snprintf(dummy, 1, "%s string %s", name, (char *) dval);
	    str = malloc(len + 1);
	    sprintf(str, "%s string %s", name, (char *) dval);
	    break;
	}

	if (dval)
	    ipmi_pefconfig_data_free(dval);

	return str;
    }
SWIGINTERN int ipmi_pef_config_t_set_val(ipmi_pef_config_t *self,int parm,int idx,char *type,char *value){
	enum ipmi_pefconf_val_type_e valtype;
	int               rv;
	unsigned int      ival = 0;
	unsigned char     *dval = NULL;
	unsigned int      dval_len = 0;

	rv = ipmi_pefconfig_parm_to_type(parm, &valtype);
	if (rv)
	    return rv;

	switch (valtype) {
	case IPMI_PEFCONFIG_INT:
	{
	    char *endstr;
	    if (strcmp(type, "integer") != 0)
		return EINVAL;
	    if (!value)
		return EINVAL;
	    if (*value == '\0')
		return EINVAL;
	    ival = strtol(value, &endstr, 0);
	    if (*endstr != '\0')
		return EINVAL;
	    break;
	}
	    
	case IPMI_PEFCONFIG_BOOL:
	    if (strcmp(type, "bool") != 0)
		return EINVAL;
	    if (!value)
		return EINVAL;
	    if (strcasecmp(value, "true") == 0)
		ival = 1;
	    else if (strcasecmp(value, "false") == 0)
		ival = 0;
	    else if (strcasecmp(value, "on") == 0)
		ival = 1;
	    else if (strcasecmp(value, "off") == 0)
		ival = 0;
	    else
		return EINVAL;
	    break;
	    
	case IPMI_PEFCONFIG_DATA:
	    if (strcmp(type, "data") != 0)
		return EINVAL;
	    if (!value)
		return EINVAL;
	    dval = parse_raw_str_data(value, &dval_len);
	    if (!dval)
		return ENOMEM;
	    break;

	case IPMI_PEFCONFIG_STR:
	    if (strcmp(type, "string") != 0)
		return EINVAL;
	    if (!value)
		return EINVAL;
	    dval = (unsigned char *) strdup((char *) value);
	    if (!dval)
		return ENOMEM;
	    break;
	}

	rv = ipmi_pefconfig_set_val(self, parm, idx, ival, dval, dval_len);
	if (dval)
	    free(dval);
	return rv;
    }
SWIGINTERN void delete_ipmi_pet_t(ipmi_pet_t *self){
	ipmi_pet_deref(self);
    }
SWIGINTERN ipmi_mcid_t *ipmi_pet_t_get_mc_id(ipmi_pet_t *self){
	ipmi_mcid_t *rv = malloc(sizeof(*rv));
	if (rv)
	    *rv = ipmi_pet_get_mc_id(self);
	return rv;
    }
SWIGINTERN int ipmi_pet_t_get_channel(ipmi_pet_t *self){
	return ipmi_pet_get_channel(self);
    }
SWIGINTERN char *ipmi_pet_t_get_ip_addr(ipmi_pet_t *self){
	struct in_addr ip;
	char           *dval = malloc(16);
	unsigned char  d[4];

	if (!dval)
	    return NULL;
	ipmi_pet_get_ip_addr(self, &ip);
	d[0] = (ip.s_addr >> 24) & 0xff;
	d[1] = (ip.s_addr >> 16) & 0xff;
	d[2] = (ip.s_addr >> 8) & 0xff;
	d[3] = (ip.s_addr >> 0) & 0xff;
	sprintf(dval, "%d.%d.%d.%d", d[0], d[1], d[2], d[3]);
	return dval;
    }
SWIGINTERN char *ipmi_pet_t_get_mac_addr(ipmi_pet_t *self){
	char          *dval = malloc(18);
	unsigned char d[6];

	if (!dval)
	    return NULL;
	ipmi_pet_get_mac_addr(self, d);
	sprintf(dval, "%d:%d:%d:%d:%d:%d", d[0], d[1], d[2], d[3], d[4], d[5]);
	return dval;
    }
SWIGINTERN int ipmi_pet_t_get_eft_sel(ipmi_pet_t *self){
	return ipmi_pet_get_eft_sel(self);
    }
SWIGINTERN int ipmi_pet_t_get_policy_num(ipmi_pet_t *self){
	return ipmi_pet_get_policy_num(self);
    }
SWIGINTERN int ipmi_pet_t_get_apt_sel(ipmi_pet_t *self){
	return ipmi_pet_get_apt_sel(self);
    }
SWIGINTERN int ipmi_pet_t_get_lan_dest_sel(ipmi_pet_t *self){
	return ipmi_pet_get_lan_dest_sel(self);
    }
SWIGINTERN void delete_ipmi_cmdlang_t(ipmi_cmdlang_t *self){
	swig_cb_val *handler_val = self->user_data;

	IPMI_SWIG_C_CB_ENTRY
	if (handler_val)
	    deref_swig_cb_val(handler_val);
	if (self->objstr)
	    free(self->objstr);
	free(self);
	IPMI_SWIG_C_CB_EXIT
    }
SWIGINTERN void ipmi_cmdlang_t_handle(ipmi_cmdlang_t *self,char const *icmd){
	char *cmd = strdup(icmd);

	IPMI_SWIG_C_CB_ENTRY
	ipmi_cmdlang_handle(self, cmd);
	IPMI_SWIG_C_CB_EXIT
    }
SWIGINTERN int ipmi_cmdlang_t_is_help(ipmi_cmdlang_t *self){
	return self->help;
    }
SWIGINTERN int ipmi_cmdlang_t_get_err(ipmi_cmdlang_t *self){
	return self->err;
    }
SWIGINTERN char *ipmi_cmdlang_t_get_errstr(ipmi_cmdlang_t *self){
	return strdup(self->errstr);
    }
SWIGINTERN char *ipmi_cmdlang_t_get_objstr(ipmi_cmdlang_t *self){
	return strdup(self->objstr);
    }
SWIGINTERN char *ipmi_cmdlang_t_get_location(ipmi_cmdlang_t *self){
	return strdup(self->location);
    }
SWIGINTERN void delete_ipmi_cmdlang_event_t(ipmi_cmdlang_event_t *self){
	/* Nothing to do. */
    }
SWIGINTERN void ipmi_cmdlang_event_t_restart(ipmi_cmdlang_event_t *self){
	ipmi_cmdlang_event_restart(self);
    }
SWIGINTERN int ipmi_cmdlang_event_t_next_field(ipmi_cmdlang_event_t *self,unsigned int *level,char const **type,char **name,char **value){
	int rv;
	unsigned int len;
	char         *n, *v;
	char         *np, *vp;
	enum ipmi_cmdlang_out_types t;
	char         *tp;
	int          i;
	char         *s;

	rv = ipmi_cmdlang_event_next_field(self, level, &t, &n, &len, &v);
	if (!rv) {
	    *type = "";
	    *name = NULL;
	    *value = NULL;
	    return rv;
	}

	if (!v)
	    v = "";

	np = strdup(n);
	if (!np)
	    return ENOMEM;

	switch (t) {
	case IPMI_CMDLANG_STRING:
	    tp = "string";
	    vp = strdup(v);
	    break;
	case IPMI_CMDLANG_BINARY:
	    tp = "binary";
	    vp = malloc(len * 5);
	    if (!vp)
		break;
	    s = vp;
	    if (len > 0)
		s += sprintf(s, "0x%2.2x", (unsigned char) v[0]);
	    for (i=1; i<len; i++)
		s += sprintf(s, " 0x%2.2x", (unsigned char) v[i]);
	    break;
	case IPMI_CMDLANG_UNICODE:
	    tp = "unicode";
	    vp = malloc(len * 5);
	    if (!vp)
		break;
	    s = vp;
	    if (len > 0)
		s += sprintf(s, "0x%2.2x", (unsigned char) v[0]);
	    for (i=1; i<len; i++)
		s += sprintf(s, " 0x%2.2x", (unsigned char) v[i]);
	    break;
	default:
	    free(np);
	    return EINVAL;
	}

	if (!vp) {
	    free(np);
	    return ENOMEM;
	}

	*name = np;
	*value = vp;
	*type = tp;

	return 1;
    }
SWIGINTERN void delete_ipmi_sol_conn_t(ipmi_sol_conn_t *self){
	ipmi_sol_free(self);
    }
SWIGINTERN void ipmi_sol_conn_t_set_ACK_timeout(ipmi_sol_conn_t *self,int timeout_usec){
	ipmi_sol_set_ACK_timeout(self, timeout_usec);
    }
SWIGINTERN int ipmi_sol_conn_t_get_ACK_timeout(ipmi_sol_conn_t *self){
	return ipmi_sol_get_ACK_timeout(self);
    }
SWIGINTERN void ipmi_sol_conn_t_set_ACK_retries(ipmi_sol_conn_t *self,int retries){
	ipmi_sol_set_ACK_retries(self, retries);
    }
SWIGINTERN int ipmi_sol_conn_t_get_ACK_retries(ipmi_sol_conn_t *self){
	return ipmi_sol_get_ACK_retries(self);
    }
SWIGINTERN int ipmi_sol_conn_t_set_use_authentication(ipmi_sol_conn_t *self,int use_authentication){
	return ipmi_sol_set_use_authentication(self, use_authentication);
    }
SWIGINTERN int ipmi_sol_conn_t_get_use_authentication(ipmi_sol_conn_t *self){
	return ipmi_sol_get_use_authentication(self);
    }
SWIGINTERN int ipmi_sol_conn_t_set_use_encryption(ipmi_sol_conn_t *self,int use_encryption){
	return ipmi_sol_set_use_encryption(self, use_encryption);
    }
SWIGINTERN int ipmi_sol_conn_t_get_use_encryption(ipmi_sol_conn_t *self){
	return ipmi_sol_get_use_encryption(self);
    }
SWIGINTERN int ipmi_sol_conn_t_set_shared_serial_alert_behavior(ipmi_sol_conn_t *self,int behavior){
	return ipmi_sol_set_shared_serial_alert_behavior(self, behavior);
    }
SWIGINTERN int ipmi_sol_conn_t_get_shared_serial_alert_behavior(ipmi_sol_conn_t *self){
	return ipmi_sol_get_shared_serial_alert_behavior(self);
    }
SWIGINTERN int ipmi_sol_conn_t_set_deassert_CTS_DCD_DSR_on_connect(ipmi_sol_conn_t *self,int assert){
	return ipmi_sol_set_deassert_CTS_DCD_DSR_on_connect(self, assert);
    }
SWIGINTERN int ipmi_sol_conn_t_get_deassert_CTS_DCD_DSR_on_connect(ipmi_sol_conn_t *self){
	return ipmi_sol_get_deassert_CTS_DCD_DSR_on_connect(self);
    }
SWIGINTERN int ipmi_sol_conn_t_set_bit_rate(ipmi_sol_conn_t *self,unsigned int rate){
	return ipmi_sol_set_bit_rate(self, rate);
    }
SWIGINTERN unsigned int ipmi_sol_conn_t_get_bit_rate(ipmi_sol_conn_t *self){
	return ipmi_sol_get_bit_rate(self);
    }

SWIGINTERNINLINE SV *
SWIG_From_unsigned_SS_long  SWIG_PERL_DECL_ARGS_1(unsigned long value)
{
  SV *sv;
  if (UVSIZE >= sizeof(value) || value <= UV_MAX)
    sv = newSVuv(value);
  else
    sv = newSVpvf("%lu", value);
  return sv_2mortal(sv);
}


SWIGINTERNINLINE SV *
SWIG_From_unsigned_SS_int  SWIG_PERL_DECL_ARGS_1(unsigned int value)
{    
  return SWIG_From_unsigned_SS_long  SWIG_PERL_CALL_ARGS_1(value);
}

SWIGINTERN int ipmi_sol_conn_t_open(ipmi_sol_conn_t *self){
	int rv;
	IPMI_SWIG_C_CB_ENTRY
	rv = ipmi_sol_open(self);
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_sol_conn_t_close(ipmi_sol_conn_t *self){
	int rv;
	IPMI_SWIG_C_CB_ENTRY
	rv = ipmi_sol_close(self);
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_sol_conn_t_force_close(ipmi_sol_conn_t *self){
	int rv;
	IPMI_SWIG_C_CB_ENTRY
	rv = ipmi_sol_force_close(self);
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_sol_conn_t_write(ipmi_sol_conn_t *self,charbuf buf,swig_cb *handler){
	ipmi_sol_transmit_complete_cb cb = NULL;
	swig_cb_val                   *handler_val = NULL;
	int                           rv;

	IPMI_SWIG_C_CB_ENTRY
	if (!nil_swig_cb(handler)) {
	    if (! valid_swig_cb(handler, sol_write_complete)) {
		rv = EINVAL;
		goto out_err;
	    }
	    cb = sol_write_complete_cb;
	    handler_val = ref_swig_cb(handler, sol_write_complete);
	}
	rv = ipmi_sol_write(self, buf.val, buf.len, cb, handler_val);
	if (rv && handler_val)
	    deref_swig_cb_val(handler_val);
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_sol_conn_t_release_nack(ipmi_sol_conn_t *self){
	int rv;
	IPMI_SWIG_C_CB_ENTRY
	rv = ipmi_sol_release_nack(self);
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_sol_conn_t_send_break(ipmi_sol_conn_t *self,swig_cb *handler){
	ipmi_sol_transmit_complete_cb cb = NULL;
	swig_cb_val                   *handler_val = NULL;
	int                           rv;

	IPMI_SWIG_C_CB_ENTRY
	if (!nil_swig_cb(handler)) {
	    if (! valid_swig_cb(handler, sol_send_break)) {
		rv = EINVAL;
		goto out_err;
	    }
	    cb = sol_send_break_cb;
	    handler_val = ref_swig_cb(handler, sol_send_break);
	}
	rv = ipmi_sol_send_break(self, cb, handler_val);
	if (rv && handler_val)
	    deref_swig_cb_val(handler_val);
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_sol_conn_t_set_CTS_assertable(ipmi_sol_conn_t *self,int asserted,swig_cb *handler){
	ipmi_sol_transmit_complete_cb cb = NULL;
	swig_cb_val                   *handler_val = NULL;
	int                           rv;

	IPMI_SWIG_C_CB_ENTRY
	if (!nil_swig_cb(handler)) {
	    if (! valid_swig_cb(handler, sol_set_CTS_assertable)) {
		rv = EINVAL;
		goto out_err;
	    }
	    cb = sol_set_CTS_assertable_cb;
	    handler_val = ref_swig_cb(handler, sol_set_CTS_assertable);
	}
	rv = ipmi_sol_set_CTS_assertable(self, asserted, cb, handler_val);
	if (rv && handler_val)
	    deref_swig_cb_val(handler_val);
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_sol_conn_t_set_DCD_DSR_asserted(ipmi_sol_conn_t *self,int asserted,swig_cb *handler){
	ipmi_sol_transmit_complete_cb cb = NULL;
	swig_cb_val                   *handler_val = NULL;
	int                           rv;

	IPMI_SWIG_C_CB_ENTRY
	if (!nil_swig_cb(handler)) {
	    if (! valid_swig_cb(handler, sol_set_DCD_DSR_asserted)) {
		rv = EINVAL;
		goto out_err;
	    }
	    cb = sol_set_DCD_DSR_asserted_cb;
	    handler_val = ref_swig_cb(handler, sol_set_DCD_DSR_asserted);
	}
	rv = ipmi_sol_set_DCD_DSR_asserted(self, asserted, cb, handler_val);
	if (rv && handler_val)
	    deref_swig_cb_val(handler_val);
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_sol_conn_t_set_RI_asserted(ipmi_sol_conn_t *self,int asserted,swig_cb *handler){
	ipmi_sol_transmit_complete_cb cb = NULL;
	swig_cb_val                   *handler_val = NULL;
	int                           rv;

	IPMI_SWIG_C_CB_ENTRY
	if (!nil_swig_cb(handler)) {
	    if (! valid_swig_cb(handler, sol_set_RI_asserted)) {
		rv = EINVAL;
		goto out_err;
	    }
	    cb = sol_set_RI_asserted_cb;
	    handler_val = ref_swig_cb(handler, sol_set_RI_asserted);
	}
	rv = ipmi_sol_set_RI_asserted(self, asserted, cb, handler_val);
	if (rv && handler_val)
	    deref_swig_cb_val(handler_val);
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_sol_conn_t_flush(ipmi_sol_conn_t *self,int queue_selectors,swig_cb *handler){
	ipmi_sol_flush_complete_cb cb = NULL;
	swig_cb_val                *handler_val = NULL;
	int                        rv;

	IPMI_SWIG_C_CB_ENTRY
	if (!nil_swig_cb(handler)) {
	    if (! valid_swig_cb(handler, sol_flush_complete)) {
		rv = EINVAL;
		goto out_err;
	    }
	    cb = sol_flush_complete_cb;
	    handler_val = ref_swig_cb(handler, sol_flush_complete);
	}
	rv = ipmi_sol_flush(self, queue_selectors, cb, handler_val);
	if (rv && handler_val)
	    deref_swig_cb_val(handler_val);
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN void delete_ipmi_sol_config_t(ipmi_sol_config_t *self){
	ipmi_sol_free_config(self);
    }
SWIGINTERN char *ipmi_sol_config_t_get_val(ipmi_sol_config_t *self,int parm,int *index){
	enum ipmi_solconf_val_type_e valtype;
	unsigned int      ival = 0;
	unsigned char     *dval = NULL;
	unsigned int      dval_len = 0;
	const char        *name;
	char              dummy[1];
	char              *str = NULL, *s;
	int               rv;
	int               i;
	unsigned int      len;

	rv = ipmi_solconfig_get_val(self, parm, &name, index, &valtype,
				    &ival, &dval, &dval_len);
	if ((rv == ENOSYS) || (rv == E2BIG))
	    return strdup(name);
	else if (rv)
	    return NULL;

	switch (valtype) {
	case IPMI_SOLCONFIG_INT:
	    len = snprintf(dummy, 1, "%s integer %d", name, ival);
	    str = malloc(len + 1);
	    sprintf(str, "%s integer %d", name, ival);
	    break;
	    
	case IPMI_SOLCONFIG_BOOL:
	    len = snprintf(dummy, 1, "%s bool %s", name,
			   ival ? "true" : "false");
	    str = malloc(len + 1);
	    sprintf(str, "%s bool %s", name, 
		    ival ? "true" : "false");
	    break;
	    
	case IPMI_SOLCONFIG_DATA:
	    len = snprintf(dummy, 1, "%s data", name);
	    len += dval_len * 5;
	    str = malloc(len + 1);
	    s = str;
	    s += sprintf(s, "%s data", name);
	    for (i=0; i<dval_len; i++)
		s += sprintf(s, " 0x%2.2x", dval[i]);
	    break;

	case IPMI_SOLCONFIG_IP:
	    len = snprintf(dummy, 1, "%s ip", name);
	    len += 4 * 4; /* worst case */
	    str = malloc(len + 1);
	    sprintf(str, "%s ip %d.%d.%d.%d", name,
		    dval[0], dval[1], dval[2], dval[3]);
	    break;

	case IPMI_SOLCONFIG_MAC:
	    len = snprintf(dummy, 1, "%s mac", name);
	    len += 6 * 3;
	    str = malloc(len + 1);
	    s = str;
	    s += sprintf(s, "%s mac ", name);
	    for (i=0; i<5; i++)
		s += sprintf(s, "%2.2x:", dval[i]);
	    sprintf(s, "%2.2x", dval[i]);
	    break;
	}

	if (dval)
	    ipmi_solconfig_data_free(dval);

	return str;
    }
SWIGINTERN int ipmi_sol_config_t_set_val(ipmi_sol_config_t *self,int parm,int idx,char *type,char *value){
	enum ipmi_solconf_val_type_e valtype;
	int               rv;
	unsigned int      ival = 0;
	unsigned char     *dval = NULL;
	unsigned int      dval_len = 0;

	rv = ipmi_solconfig_parm_to_type(parm, &valtype);
	if (rv)
	    return rv;

	switch (valtype) {
	case IPMI_SOLCONFIG_INT:
	{
	    char *endstr;
	    if (strcmp(type, "integer") != 0)
		return EINVAL;
	    if (!value)
		return EINVAL;
	    if (*value == '\0')
		return EINVAL;
	    ival = strtol(value, &endstr, 0);
	    if (*endstr != '\0')
		return EINVAL;
	    break;
	}
	    
	case IPMI_SOLCONFIG_BOOL:
	    if (strcmp(type, "bool") != 0)
		return EINVAL;
	    if (!value)
		return EINVAL;
	    if (strcasecmp(value, "true") == 0)
		ival = 1;
	    else if (strcasecmp(value, "false") == 0)
		ival = 0;
	    else if (strcasecmp(value, "on") == 0)
		ival = 1;
	    else if (strcasecmp(value, "off") == 0)
		ival = 0;
	    else
		return EINVAL;
	    break;
	    
	case IPMI_SOLCONFIG_DATA:
	    if (strcmp(type, "data") != 0)
		return EINVAL;
	    if (!value)
		return EINVAL;
	    dval = parse_raw_str_data(value, &dval_len);
	    if (!dval)
		return ENOMEM;
	    break;

	case IPMI_SOLCONFIG_IP:
	    {
		struct in_addr addr;
		if (strcmp(type, "ip") != 0)
		    return EINVAL;
		rv = parse_ip_addr(value, &addr);
		if (rv)
		    return rv;
		dval = malloc(4);
		memcpy(dval, &addr.s_addr, 4);
		dval_len = 4;
	    }
	    break;

	case IPMI_SOLCONFIG_MAC:
	    if (strcmp(type, "mac") != 0)
		return EINVAL;
	    dval = malloc(6);
	    rv = parse_mac_addr(value, dval);
	    if (rv) {
		free(dval);
		return rv;
	    }
	    dval_len = 6;
	    break;
	}

	rv = ipmi_solconfig_set_val(self, parm, idx, ival, dval, dval_len);
	if (dval)
	    free(dval);
	return rv;
    }
SWIGINTERN void delete_ipmi_solparm_t(ipmi_solparm_t *self){
	ipmi_solparm_deref(self);
    }
SWIGINTERN ipmi_mcid_t *ipmi_solparm_t_get_mc_id(ipmi_solparm_t *self){
	ipmi_mcid_t *rv = malloc(sizeof(*rv));
	if (rv)
	    *rv = ipmi_solparm_get_mc_id(self);
	return rv;
    }
SWIGINTERN int ipmi_solparm_t_get_channel(ipmi_solparm_t *self){
	return ipmi_solparm_get_channel(self);
    }
SWIGINTERN int ipmi_solparm_t_get_parm(ipmi_solparm_t *self,int parm,int set,int block,swig_cb *handler){
	int         rv;
	swig_cb_val *handler_val;

	IPMI_SWIG_C_CB_ENTRY
	if (!valid_swig_cb(handler, solparm_got_parm_cb))
	    rv = EINVAL;
	else {
	    handler_val = ref_swig_cb(handler, solparm_got_parm_cb);
	    ipmi_solparm_ref(self);
	    rv = ipmi_solparm_get_parm(self, parm, set, block,
				       solparm_get_parm, handler_val);
	    if (rv) {
		ipmi_solparm_deref(self);
		deref_swig_cb_val(handler_val);
	    }
	}
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_solparm_t_set_parm(ipmi_solparm_t *self,int parm,char *value,swig_cb *handler){
	int           rv;
	swig_cb_val   *handler_val = NULL;
	unsigned char *data;
	unsigned int  length;

	IPMI_SWIG_C_CB_ENTRY
	data = parse_raw_str_data(value, &length);
	if (!data) {
	    rv = ENOMEM;
	    goto out_err;
	}

	if (!nil_swig_cb(handler)) {
	    if (! valid_swig_cb(handler, solparm_set_parm_cb)) {
		free(data);
		rv = EINVAL;
		goto out_err;
	    }
	    handler_val = ref_swig_cb(handler, solparm_set_parm_cb);
	}

	if (handler_val)
	    ipmi_solparm_ref(self);
	rv = ipmi_solparm_set_parm(self, parm, data, length,
				   solparm_set_parm, handler_val);
	free(data);
	if (rv && handler_val) {
	    ipmi_solparm_deref(self);
	    deref_swig_cb_val(handler_val);
	}
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_solparm_t_set_parm_array(ipmi_solparm_t *self,int parm,intarray value,swig_cb *handler){
	int           rv;
	swig_cb_val   *handler_val = NULL;
	unsigned char *data;
	unsigned int  length = value.len;

	IPMI_SWIG_C_CB_ENTRY
	if (length == 0)
	    data = malloc(1);
	else
	    data = malloc(length);
	if (!data) {
	    rv = ENOMEM;
	    goto out_err;
	}
	parse_ipmi_data(value, data, length, &length);

	if (!nil_swig_cb(handler)) {
	    if (! valid_swig_cb(handler, solparm_set_parm_cb)) {
		free(data);
		rv = EINVAL;
		goto out_err;
	    }
	    handler_val = ref_swig_cb(handler, solparm_set_parm_cb);
	}

	if (handler_val)
	    ipmi_solparm_ref(self);
	rv = ipmi_solparm_set_parm(self, parm, data, length,
				   solparm_set_parm, handler_val);
	free(data);
	if (rv && handler_val) {
	    ipmi_solparm_deref(self);
	    deref_swig_cb_val(handler_val);
	}
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_solparm_t_get_config(ipmi_solparm_t *self,swig_cb *handler){
	int         rv;
	swig_cb_val *handler_val = NULL;

	IPMI_SWIG_C_CB_ENTRY
	if (!valid_swig_cb(handler, solparm_got_config_cb))
	    rv = EINVAL;
	else {
	    handler_val = ref_swig_cb(handler, solparm_got_config_cb);

	    ipmi_solparm_ref(self);
	    rv = ipmi_sol_get_config(self, solparm_get_config, handler_val);
	    if (rv) {
		ipmi_solparm_deref(self);
		deref_swig_cb_val(handler_val);
	    }
	}
	IPMI_SWIG_C_CB_EXIT
	return rv;
	
    }
SWIGINTERN int ipmi_solparm_t_set_config(ipmi_solparm_t *self,ipmi_sol_config_t *config,swig_cb *handler){
	int         rv;
	swig_cb_val *handler_val = NULL;

	IPMI_SWIG_C_CB_ENTRY
	if (!nil_swig_cb(handler)) {
	    if (! valid_swig_cb(handler, solparm_set_config_cb)) {
		rv = EINVAL;
		goto out_err;
	    }
	    handler_val = ref_swig_cb(handler, solparm_set_config_cb);
	}

	if (handler_val)
	    ipmi_solparm_ref(self);
	rv = ipmi_sol_set_config(self, config,
				 solparm_set_config, handler_val);
	if (rv && handler_val) {
	    ipmi_solparm_deref(self);
	    deref_swig_cb_val(handler_val);
	}
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }
SWIGINTERN int ipmi_solparm_t_clear_lock(ipmi_solparm_t *self,ipmi_sol_config_t *config,swig_cb *handler){
	int         rv;
	swig_cb_val *handler_val = NULL;

	IPMI_SWIG_C_CB_ENTRY
	if (!nil_swig_cb(handler)) {
	    if (! valid_swig_cb(handler, solparm_clear_lock_cb)) {
		rv = EINVAL;
		goto out_err;
	    }
	    handler_val = ref_swig_cb(handler, solparm_clear_lock_cb);
	}

	if (handler_val)
	    ipmi_solparm_ref(self);
	rv = ipmi_sol_clear_lock(self, config,
				 solparm_clear_lock, handler_val);
	if (rv && handler_val) {
	    ipmi_solparm_deref(self);
	    deref_swig_cb_val(handler_val);
	}
    out_err:
	IPMI_SWIG_C_CB_EXIT
	return rv;
    }

void enable_debug_malloc()
{
    if (!swig_os_hnd) {
	DEBUG_MALLOC_ENABLE();
    }
}

void enable_debug_msg()
{
    DEBUG_MSG_ENABLE();
}

void disable_debug_msg()
{
    DEBUG_MSG_DISABLE();
}

void enable_debug_rawmsg()
{
    DEBUG_RAWMSG_ENABLE();
}

void disable_debug_rawmsg()
{
    DEBUG_RAWMSG_DISABLE();
}

int
init_glib(void)
{
#ifdef HAVE_GLIB
    if (swig_os_hnd)
	return 0;
#ifdef OpenIPMI_HAVE_INIT_LANG
    init_lang();
#endif
    swig_os_hnd = init_glib_shim("");
    return 0;
#else
    return ENOSYS;
#endif
}

int
init_glib12(void)
{
#ifdef HAVE_GLIB12
    if (swig_os_hnd)
	return 0;
#ifdef OpenIPMI_HAVE_INIT_LANG
    init_lang();
#endif
    swig_os_hnd = init_glib_shim("12");
    return 0;
#else
    return ENOSYS;
#endif
}

#if defined(HAVE_TCL)
#include <OpenIPMI/ipmi_tcl.h>
#endif

int
init_tcl(void)
{
#ifdef HAVE_TCL
    if (swig_os_hnd)
	return 0;
#ifdef OpenIPMI_HAVE_INIT_LANG
    init_lang();
#endif
    swig_os_hnd = ipmi_tcl_get_os_handler(0);
    swig_os_hnd->set_log_handler(swig_os_hnd, openipmi_swig_vlog);
    ipmi_init(swig_os_hnd);
    ipmi_cmdlang_init(swig_os_hnd);
    return 0;
#else
    return ENOSYS;
#endif
}

/*
 * Initialize the OS handler and use the POSIX version.
 */
int
init_posix(void)
{
    if (swig_os_hnd)
	return 0;
#ifdef OpenIPMI_HAVE_INIT_LANG
    init_lang();
#endif
#ifdef USE_POSIX_THREADS
    swig_os_hnd = ipmi_posix_thread_setup_os_handler(SIGUSR1);
#else
    swig_os_hnd = ipmi_posix_setup_os_handler();
#endif
    swig_os_hnd->set_log_handler(swig_os_hnd, openipmi_swig_vlog);
    ipmi_init(swig_os_hnd);
    ipmi_cmdlang_init(swig_os_hnd);
    return 0;
}

/*
 * Initialize the OS handler with the default version.  This is glib
 * if it is present, POSIX if it is not.
 */
int
init(void)
{
    int rv;

    if (rv = init_glib())
        rv = init_posix();
    return rv;
}

/*
 * Free up all the memory used by OpenIPMI.
 */
void
shutdown_everything()
{
    IPMI_SWIG_C_CB_ENTRY
    ipmi_cmdlang_cleanup();
    ipmi_shutdown();
    swig_os_hnd->free_os_handler(swig_os_hnd);
    swig_os_hnd = NULL;
#ifdef OpenIPMI_HAVE_CLEANUP_LANG
    void cleanup_lang();
#endif
    IPMI_SWIG_C_CB_EXIT
}

/*
 * Perform one operation.  The first parameter is a timeout in
 * milliseconds.
 */
void
wait_io(int timeout)
{
    struct timeval tv = { (timeout / 1000), ((timeout + 999) % 1000) };
    IPMI_SWIG_C_BLOCK_ENTRY
    swig_os_hnd->perform_one_op(swig_os_hnd, &tv);
    IPMI_SWIG_C_BLOCK_EXIT
}



static void
domain_cleanup_add(ipmi_domain_t *domain, void *cb_data)
{
    ipmi_domain_add_connect_change_handler_cl
	(domain, domain_connect_change_handler_cl, NULL);
}

static ipmi_domain_id_t *
open_domain(char *name, argarray *args, swig_cb *done, swig_cb *up)
{
    int                i, j;
    int                num_options = 0;
    ipmi_open_option_t options[10];
    int                set = 0;
    ipmi_args_t        *con_parms[2];
    ipmi_con_t         *con[2];
    ipmi_domain_id_t   *nd;
    int                rv;
    swig_cb_val        *done_val = NULL;
    swig_cb_val        *up_val = NULL;
    ipmi_domain_con_cb con_change = NULL;
    ipmi_domain_ptr_cb domain_up = NULL;

    IPMI_SWIG_C_CB_ENTRY
    nd = malloc(sizeof(*nd));

    for (i=0; i<args->len; i++) {
	if (num_options >= 10) {
	    free(nd);
	    nd = NULL;
	    goto out_err;
	}

	if (! ipmi_parse_options(options+num_options, args->val[i]))
	    num_options++;
	else
	    break;
    }

    rv = ipmi_parse_args(&i, args->len, args->val, &con_parms[set]);
    if (rv) {
	free(nd);
	nd = NULL;
	goto out_err;
    }
    set++;

    if (i < args->len) {
	rv = ipmi_parse_args(&i, args->len, args->val, &con_parms[set]);
	if (rv) {
	    ipmi_free_args(con_parms[0]);
	    free(nd);
	    nd = NULL;
	    goto out_err;
	}
	set++;
    }
    
    for (i=0; i<set; i++) {
	rv = ipmi_args_setup_con(con_parms[i],
				 swig_os_hnd,
				 NULL,
				 &con[i]);
	if (rv) {
	    for (j=0; j<i; j++)
		con[j]->close_connection(con[j]);
            free(nd);
	    nd = NULL;
	    goto out;
	}
    }

    if (!nil_swig_cb(up)) {
	if (valid_swig_cb(up, domain_up_cb)) {
	    up_val = ref_swig_cb(up, domain_up_cb);
	    domain_up = domain_fully_up;
	} else {
	    free(nd);
	    nd = NULL;
	    goto out;
	}
    }
    if (!nil_swig_cb(done)){
	if (valid_swig_cb(done, conn_change_cb)) {
	    done_val = ref_swig_cb(done, conn_change_cb);
	    con_change = domain_connect_change_handler;
	} else {
	    if (domain_up)
		deref_swig_cb(up);
	    free(nd);
	    nd = NULL;
	    goto out;
	}
    }
    rv = ipmi_open_domain(name, con, set, con_change, done_val,
			  domain_up, up_val,
			  options, num_options, nd);
    if (rv) {
	if (domain_up)
	    deref_swig_cb(up);
	if (con_change)
	    deref_swig_cb(done);
	for (i=0; i<set; i++)
	    con[i]->close_connection(con[i]);
	free(nd);
	nd = NULL;
	goto out;
    }

    ipmi_domain_pointer_cb(*nd, domain_cleanup_add, NULL);

 out:
    for (i=0; i<set; i++)
	ipmi_free_args(con_parms[i]);

 out_err:
    IPMI_SWIG_C_CB_EXIT
    return nd;
}

static ipmi_domain_id_t *
open_domain2(char *name, argarray *args, swig_cb *done, swig_cb *up)
{
    int                i, j;
    int                num_options = 0;
    ipmi_open_option_t options[10];
    int                set = 0;
    ipmi_args_t        *con_parms[2];
    ipmi_con_t         *con[2];
    ipmi_domain_id_t   *nd;
    int                rv;
    swig_cb_val        *done_val = NULL;
    swig_cb_val        *up_val = NULL;
    ipmi_domain_con_cb con_change = NULL;
    ipmi_domain_ptr_cb domain_up = NULL;

    IPMI_SWIG_C_CB_ENTRY
    nd = malloc(sizeof(*nd));

    for (i=0; i<args->len; i++) {
	if (num_options >= 10) {
	    free(nd);
	    nd = NULL;
	    goto out_err;
	}

	if (! ipmi_parse_options(options+num_options, args->val[i]))
	    num_options++;
	else
	    break;
    }

    rv = ipmi_parse_args2(&i, args->len, args->val, &con_parms[set]);
    if (rv) {
	free(nd);
	nd = NULL;
	goto out_err;
    }
    set++;

    if (i < args->len) {
	rv = ipmi_parse_args2(&i, args->len, args->val, &con_parms[set]);
	if (rv) {
	    ipmi_free_args(con_parms[0]);
	    free(nd);
	    nd = NULL;
	    goto out_err;
	}
	set++;
    }

    for (i=0; i<set; i++) {
	rv = ipmi_args_setup_con(con_parms[i],
				 swig_os_hnd,
				 NULL,
				 &con[i]);
	if (rv) {
	    for (j=0; j<i; j++)
		con[j]->close_connection(con[j]);
            free(nd);
	    nd = NULL;
	    goto out;
	}
    }

    if (!nil_swig_cb(up)) {
	if (valid_swig_cb(up, domain_up_cb)) {
	    up_val = ref_swig_cb(up, domain_up_cb);
	    domain_up = domain_fully_up;
	} else {
	    free(nd);
	    nd = NULL;
	    goto out;
	}
    }
    if (!nil_swig_cb(done)){
	if (valid_swig_cb(done, conn_change_cb)) {
	    done_val = ref_swig_cb(done, conn_change_cb);
	    con_change = domain_connect_change_handler;
	} else {
	    if (domain_up)
		deref_swig_cb(up);
	    free(nd);
	    nd = NULL;
	    goto out;
	}
    }
    rv = ipmi_open_domain(name, con, set, con_change, done_val,
			  domain_up, up_val,
			  options, num_options, nd);
    if (rv) {
	if (domain_up)
	    deref_swig_cb(up);
	if (con_change)
	    deref_swig_cb(done);
	for (i=0; i<set; i++)
	    con[i]->close_connection(con[i]);
	free(nd);
	nd = NULL;
	goto out;
    }

    ipmi_domain_pointer_cb(*nd, domain_cleanup_add, NULL);

 out:
    for (i=0; i<set; i++)
	ipmi_free_args(con_parms[i]);

 out_err:
    IPMI_SWIG_C_CB_EXIT
    return nd;
}

static ipmi_domain_id_t *
open_domain3(char *name, argarray *ioptions, iargarray *args,
	     swig_cb *done, swig_cb *up)
{
    int                i, j;
    int                num_options = 0;
    ipmi_open_option_t options[10];
    int                set = 0;
    ipmi_con_t         *con[2];
    ipmi_domain_id_t   *nd;
    int                rv;
    swig_cb_val        *done_val = NULL;
    swig_cb_val        *up_val = NULL;
    ipmi_domain_con_cb con_change = NULL;
    ipmi_domain_ptr_cb domain_up = NULL;

    IPMI_SWIG_C_CB_ENTRY
    nd = malloc(sizeof(*nd));

    for (i=0; i<ioptions->len; i++) {
	if (num_options >= 10) {
	    free(nd);
	    nd = NULL;
	    goto out_err;
	}
	
	if (! ipmi_parse_options(options+num_options, ioptions->val[i]))
	    num_options++;
	else
	    break;
    }

    for (i=0; i<args->len; i++) {
	rv = ipmi_args_setup_con(args->val[i],
				 swig_os_hnd,
				 NULL,
				 &con[i]);
	if (rv) {
	    for (j=0; j<i; j++)
		con[j]->close_connection(con[j]);
            free(nd);
	    nd = NULL;
	    goto out;
	}
	set++;
    }

    if (!nil_swig_cb(up)) {
	if (valid_swig_cb(up, domain_up_cb)) {
	    up_val = ref_swig_cb(up, domain_up_cb);
	    domain_up = domain_fully_up;
	} else {
	    free(nd);
	    nd = NULL;
	    goto out;
	}
    }
    if (!nil_swig_cb(done)){
	if (valid_swig_cb(done, conn_change_cb)) {
	    done_val = ref_swig_cb(done, conn_change_cb);
	    con_change = domain_connect_change_handler;
	} else {
	    if (domain_up)
		deref_swig_cb(up);
	    free(nd);
	    nd = NULL;
	    goto out;
	}
    }
    rv = ipmi_open_domain(name, con, set, con_change, done_val,
			  domain_up, up_val,
			  options, num_options, nd);
    if (rv) {
	if (domain_up)
	    deref_swig_cb(up);
	if (con_change)
	    deref_swig_cb(done);
	for (i=0; i<set; i++)
	    con[i]->close_connection(con[i]);
	free(nd);
	nd = NULL;
	goto out;
    }

    ipmi_domain_pointer_cb(*nd, domain_cleanup_add, NULL);

 out:

 out_err:
    IPMI_SWIG_C_CB_EXIT
    return nd;
}

static void
set_log_handler(swig_cb *handler)
{
    swig_cb_val *old_handler = swig_log_handler;
    IPMI_SWIG_C_CB_ENTRY
    if (valid_swig_cb(handler, log))
	swig_log_handler = ref_swig_cb(handler, log);
    else
	swig_log_handler = NULL;
    if (old_handler)
	deref_swig_cb_val(old_handler);
    IPMI_SWIG_C_CB_EXIT
}

static const char *
color_string(int color)
{
    return ipmi_get_color_string(color);
}

static const char *
lanparm_parm_to_str(int parm)
{
    return ipmi_lanconfig_parm_to_str(parm);
}

static int
lanconfig_enum_val(int parm, int val, int *nval, const char **sval)
{
    return ipmi_lanconfig_enum_val(parm, val, nval, sval);
}

static int
lanconfig_enum_idx(int parm, int idx, const char **sval)
{
    return ipmi_lanconfig_enum_idx(parm, idx, sval);
}


static int
lanparm_str_to_parm(char *str)
{
    return ipmi_lanconfig_str_to_parm(str);
}

static const char *
pef_parm_to_str(int parm)
{
    return ipmi_pefconfig_parm_to_str(parm);
}

static int
pef_str_to_parm(char *str)
{
    return ipmi_pefconfig_str_to_parm(str);
}

static int
pefconfig_enum_val(int parm, int val, int *nval, const char **sval)
{
    return ipmi_lanconfig_enum_val(parm, val, nval, sval);
}

static int
pefconfig_enum_idx(int parm, int idx, const char **sval)
{
    return ipmi_pefconfig_enum_idx(parm, idx, sval);
}

static const char *
get_threshold_access_support_string(int val)
{
    return ipmi_get_threshold_access_support_string(val);
}

static const char *
get_hysteresis_support_string(int val)
{
    return ipmi_get_hysteresis_support_string(val);
}

static const char *
get_event_support_string(int val)
{
    return ipmi_get_event_support_string(val);
}

static const char *
channel_medium_string(int val)
{
    return ipmi_channel_medium_string(val);
}

static const char *
channel_protocol_string(int val)
{
    return ipmi_channel_protocol_string(val);
}

static const char *
channel_session_support_string(int val)
{
    return ipmi_channel_session_support_string(val);
}

static const char *
channel_access_mode_string(int val)
{
    return ipmi_channel_access_mode_string(val);
}

static const char *
privilege_string(int val)
{
    return ipmi_privilege_string(val);
}

static const char *
authtype_string(int val)
{
    return ipmi_authtype_string(val);
}

static const char *
solparm_parm_to_str(int parm)
{
    return ipmi_solconfig_parm_to_str(parm);
}

static int
solparm_str_to_parm(char *str)
{
    return ipmi_solconfig_str_to_parm(str);
}

static int
solconfig_enum_val(int parm, int val, int *nval, const char **sval)
{
    return ipmi_solconfig_enum_val(parm, val, nval, sval);
}

static int
solconfig_enum_idx(int parm, int idx, const char **sval)
{
    return ipmi_solconfig_enum_idx(parm, idx, sval);
}

static char *
get_error_string(unsigned int err)
{
    int  len;
    char *buf;

    len = ipmi_get_error_string_len(err);
    buf = malloc(len);
    if (!buf)
	return NULL;
    ipmi_get_error_string(err, buf, len);
    return buf;
}

static void
domain_change_handler(ipmi_domain_t      *domain,
		      enum ipmi_update_e op,
		      void               *cb_data)
{
    swig_cb_val *cb = cb_data;
    swig_ref    domain_ref;
    domain_ref = swig_make_ref(domain, ipmi_domain_t);
    swig_call_cb(cb, "domain_change_cb", "%s%p",
		 ipmi_update_e_string(op), &domain_ref);
    swig_free_ref_check(domain_ref, ipmi_domain_t);
}

int
add_domain_change_handler(swig_cb *handler)
{
    int rv;
    swig_cb_val *handler_val;
    IPMI_SWIG_C_CB_ENTRY
    if (! valid_swig_cb(handler, domain_change_cb)) {
	rv = EINVAL;
	goto out_err;
    }
    handler_val = ref_swig_cb(handler, domain_change_cb);
    rv = ipmi_domain_add_domain_change_handler(domain_change_handler,
					       handler_val);
    if (rv)
	deref_swig_cb_val(handler_val);
out_err:
    IPMI_SWIG_C_CB_EXIT
    return rv;
}

int
remove_domain_change_handler(swig_cb *handler)
{
    int rv;
    swig_cb_val *handler_val;
    IPMI_SWIG_C_CB_ENTRY
    if (! valid_swig_cb(handler, domain_change_cb)) {
	rv = EINVAL;
	goto out_err;
    }
    handler_val = get_swig_cb(handler, domain_change_cb);
    rv = ipmi_domain_remove_domain_change_handler(domain_change_handler,
						  handler_val);
    if (!rv)
	deref_swig_cb_val(handler_val);
out_err:
    IPMI_SWIG_C_CB_EXIT
    return rv;
}



    static void parse_args_iter_help(swig_cb *help_cb)
    {
	int         rv;
	swig_cb_val *handler_val;

	IPMI_SWIG_C_CB_ENTRY
	if (! valid_swig_cb(help_cb, parse_args_iter_help_cb))
	    rv = EINVAL;
	else {
	    handler_val = get_swig_cb(help_cb, parse_args_iter_help_cb);
	    ipmi_parse_args_iter_help(parse_args_iter_help_hnd, handler_val);
	}
	IPMI_SWIG_C_CB_EXIT
    }


    static const char *parse_option_help(void)
    {
	return ipmi_parse_options_help();
    }


#if defined(LLONG_MAX) && !defined(SWIG_LONG_LONG_AVAILABLE)
#  define SWIG_LONG_LONG_AVAILABLE
#endif


#include <stdio.h>
#if (defined(_MSC_VER) && (_MSC_VER < 1900)) || defined(__BORLANDC__) || defined(_WATCOM)
# ifndef snprintf
#  define snprintf _snprintf
# endif
#endif


#ifdef SWIG_LONG_LONG_AVAILABLE
SWIGINTERNINLINE SV *
SWIG_From_long_SS_long  SWIG_PERL_DECL_ARGS_1(long long value)
{
  SV *sv;
  if (IVSIZE >= sizeof(value) || (value >= IV_MIN && value <= IV_MAX))
    sv = newSViv((IV)(value));
  else {
    //sv = newSVpvf("%lld", value); doesn't work in non 64bit Perl
    char temp[256];
    SWIG_snprintf(temp, sizeof(temp), "%lld", value);
    sv = newSVpv(temp, 0);
  }
  return sv_2mortal(sv);
}
#endif


    static ipmi_args_t *
    alloc_empty_args(char *con_type)
    {
	int         rv;
	ipmi_args_t *argv;
	rv = ipmi_args_alloc(con_type, &argv);
	if (rv)
	    return NULL;
	return argv;
    }


    static ipmi_args_t *
    alloc_parse_args(argarray *args)
    {
	int         rv;
	ipmi_args_t *argv;
	int         i = 0;

	rv = ipmi_parse_args(&i, args->len, args->val, &argv);
	if (rv)
	    return NULL;
	return argv;
    }


    static void cmdlang_set_evinfo(int evinfo)
    {
	ipmi_cmdlang_set_evinfo(evinfo);
    }

    static int cmdlang_get_evinfo(void)
    {
	return ipmi_cmdlang_get_evinfo();
    }

    static void cmdlang_down(ipmi_cmdlang_t *info)
    {
	swig_cb_val *cb = info->user_data;
	swig_ref    ref = swig_make_ref(info, ipmi_cmdlang_t);

	swig_call_cb(cb, "cmdlang_down", "%p", &ref);
	swig_free_ref(ref);
    }

    static void cmdlang_up(ipmi_cmdlang_t *info)
    {
	swig_cb_val *cb = info->user_data;
	swig_ref    ref = swig_make_ref(info, ipmi_cmdlang_t);

	swig_call_cb(cb, "cmdlang_up", "%p", &ref);
	swig_free_ref(ref);
    }

    static void cmdlang_done(ipmi_cmdlang_t *info)
    {
	swig_cb_val *cb = info->user_data;
	swig_ref    ref = swig_make_ref(info, ipmi_cmdlang_t);

	swig_call_cb(cb, "cmdlang_done", "%p", &ref);
	swig_free_ref(ref);

	/* Clean up the cmdlang information */
	if (info->errstr_dynalloc)
	    ipmi_mem_free(info->errstr);
	info->errstr_dynalloc = 0;
	info->errstr = NULL;
	info->objstr[0] = '\0';
	info->err = 0;
    }

    static void cmdlang_out(ipmi_cmdlang_t *info,
			    const char     *name,
			    const char     *value)
    {
	swig_cb_val *cb = info->user_data;
	swig_ref    ref = swig_make_ref(info, ipmi_cmdlang_t);

	if (!value)
	    value = "";
	swig_call_cb(cb, "cmdlang_out", "%p%s%s", &ref, name, value);
	swig_free_ref(ref);
    }

    static void cmdlang_out_binary(ipmi_cmdlang_t *info,
				   const char     *name,
				   const char     *value,
				   unsigned int   len)
    {
	swig_cb_val *cb = info->user_data;
	swig_ref    ref = swig_make_ref(info, ipmi_cmdlang_t);

	swig_call_cb(cb, "cmdlang_out_binary", "%p%s%*s", &ref, name,
		     len, value);
	swig_free_ref(ref);
    }
    
    static void cmdlang_out_unicode(ipmi_cmdlang_t *info,
				    const char     *name,
				    const char     *value,
				    unsigned int   len)
    {
	swig_cb_val *cb = info->user_data;
	swig_ref    ref = swig_make_ref(info, ipmi_cmdlang_t);

	swig_call_cb(cb, "cmdlang_out_unicode", "%p%s%*s", &ref, name,
		     len, value);
	swig_free_ref(ref);
    }

    static ipmi_cmdlang_t *
    alloc_cmdlang(swig_cb *handler)
    {
	ipmi_cmdlang_t *cmdlang = NULL;

	IPMI_SWIG_C_CB_ENTRY
	if (nil_swig_cb(handler))
	    goto out;

	if (!valid_swig_cb(handler, cmdlang_out))
	    goto out;
	if (!valid_swig_cb(handler, cmdlang_out_binary))
	    goto out;
	if (!valid_swig_cb(handler, cmdlang_out_unicode))
	    goto out;
	if (!valid_swig_cb(handler, cmdlang_down))
	    goto out;
	if (!valid_swig_cb(handler, cmdlang_up))
	    goto out;
	if (!valid_swig_cb(handler, cmdlang_done))
	    goto out;

	cmdlang = malloc(sizeof(*cmdlang));
	if (!cmdlang)
	    goto out;
	memset(cmdlang, 0, sizeof(*cmdlang));

	cmdlang->out = cmdlang_out;
	cmdlang->down = cmdlang_down;
	cmdlang->up = cmdlang_up;
	cmdlang->done = cmdlang_done;
	cmdlang->out_binary = cmdlang_out_binary;
	cmdlang->out_unicode = cmdlang_out_unicode;

	cmdlang->os_hnd = swig_os_hnd;

	cmdlang->objstr = malloc(IPMI_MAX_NAME_LEN);
	if (!cmdlang->objstr) {
	    free(cmdlang);
	    cmdlang = NULL;
	    goto out;
	}
	cmdlang->objstr[0] = '\0';
	cmdlang->objstr_len = IPMI_MAX_NAME_LEN;

	cmdlang->user_data = ref_swig_gencb(handler);

    out:
	IPMI_SWIG_C_CB_EXIT
	return cmdlang;
    }

    swig_cb_val *cmdlang_global_err_handler = NULL;

    static void cmdlang_global_err(char *objstr,
				   char *location,
				   char *errstr,
				   int  errval)
    {
	swig_cb_val *handler = cmdlang_global_err_handler;

	if (!objstr)
	    objstr = "";
	if (!location)
	    location = "";
	if (! handler) {
	    fprintf(stderr, "Global IPMI cmdlang error: %s(%s): %s (%d)\n",
		    objstr, location, errstr, errval);
	} else {
	    swig_call_cb(handler,
			 "global_cmdlang_err",
			 "%s%s%s%d", objstr, location, errstr, errval);
	}
    }

    swig_cb_val *cmdlang_event_handler = NULL;

    static void cmdlang_report_event(ipmi_cmdlang_event_t *event)
    {
	swig_ref event_ref;
	swig_cb_val *handler = cmdlang_event_handler;

	if (! handler)
	    return;

	event_ref = swig_make_ref(event, ipmi_cmdlang_event_t);
	swig_call_cb(handler, "cmdlang_event", "%p", &event_ref);
	/* User shouldn't keep these around. */
	swig_free_ref_check(event_ref, ipmi_cmdlang_event_t);
    }

    void set_cmdlang_global_err_handler(swig_cb *handler)
    {
	swig_cb_val *old_handler = cmdlang_global_err_handler;
	IPMI_SWIG_C_CB_ENTRY
	ipmi_cmdlang_err_rpt = cmdlang_global_err;
	if (valid_swig_cb(handler, global_cmdlang_err))
	    cmdlang_global_err_handler = ref_swig_cb(handler,
						     global_cmdlang_err);
	else
	    cmdlang_global_err_handler = NULL;
	if (old_handler)
	    deref_swig_cb_val(old_handler);
	IPMI_SWIG_C_CB_EXIT
    }

    void set_cmdlang_event_handler(swig_cb *handler)
    {
	swig_cb_val *old_handler = cmdlang_event_handler;
	IPMI_SWIG_C_CB_ENTRY
	ipmi_cmdlang_event_rpt = cmdlang_report_event;
	if (valid_swig_cb(handler, cmdlang_event))
	    cmdlang_event_handler = ref_swig_cb(handler, cmdlang_event);
	else
	    cmdlang_event_handler = NULL;
	if (old_handler)
	    deref_swig_cb_val(old_handler);
	IPMI_SWIG_C_CB_EXIT
    }


static char *sol_state_string(int val)
{
    switch (val) {
    case ipmi_sol_state_closed:
	return "closed";
    case ipmi_sol_state_connecting:
	return "connecting";
    case ipmi_sol_state_connected:
	return "connected";
    case ipmi_sol_state_connected_ctu:
	return "connected no char xfer";
    case ipmi_sol_state_closing:
	return "closing";
    default:
	return "unknown";
    }
}

#ifdef __cplusplus
extern "C" {
#endif

#define MAGIC_CLASS
SWIGCLASS_STATIC int swig_magic_readonly(pTHX_ SV *SWIGUNUSEDPARM(sv), MAGIC *SWIGUNUSEDPARM(mg)) {
    MAGIC_PPERL
    croak("Value is read-only.");
    return 0;
}

#ifdef __cplusplus
}
#endif

#ifdef __cplusplus
extern "C" {
#endif
XS(_wrap_strconstarray_val_set) {
  {
    struct strconstarray *arg1 = 0 ;
    char **arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: strconstarray_val_set(self,val);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_strconstarray, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "strconstarray_val_set" "', argument " "1"" of type '" "struct strconstarray *""'"); 
    }
    arg1 = (struct strconstarray *)(argp1);
    res2 = SWIG_ConvertPtr(ST(1), &argp2,SWIGTYPE_p_p_char, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "strconstarray_val_set" "', argument " "2"" of type '" "char const **""'"); 
    }
    arg2 = (char **)(argp2);
    if (arg1) (arg1)->val = (char const **)arg2;
    ST(argvi) = &PL_sv_undef;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_strconstarray_val_get) {
  {
    struct strconstarray *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    char **result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: strconstarray_val_get(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_strconstarray, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "strconstarray_val_get" "', argument " "1"" of type '" "struct strconstarray *""'"); 
    }
    arg1 = (struct strconstarray *)(argp1);
    result = (char **) ((arg1)->val);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_p_char, 0 | 0); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_strconstarray_len_set) {
  {
    struct strconstarray *arg1 = 0 ;
    int arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: strconstarray_len_set(self,len);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_strconstarray, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "strconstarray_len_set" "', argument " "1"" of type '" "struct strconstarray *""'"); 
    }
    arg1 = (struct strconstarray *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "strconstarray_len_set" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    if (arg1) (arg1)->len = arg2;
    ST(argvi) = &PL_sv_undef;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_strconstarray_len_get) {
  {
    struct strconstarray *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: strconstarray_len_get(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_strconstarray, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "strconstarray_len_get" "', argument " "1"" of type '" "struct strconstarray *""'"); 
    }
    arg1 = (struct strconstarray *)(argp1);
    result = (int) ((arg1)->len);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_new_strconstarray) {
  {
    int argvi = 0;
    struct strconstarray *result = 0 ;
    dXSARGS;
    
    if ((items < 0) || (items > 0)) {
      SWIG_croak("Usage: new_strconstarray();");
    }
    result = (struct strconstarray *)calloc(1, sizeof(struct strconstarray));
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_strconstarray, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
    XSRETURN(argvi);
    fail:;
  }
  SWIG_croak_null();
}


XS(_wrap_delete_strconstarray) {
  {
    struct strconstarray *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: delete_strconstarray(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_strconstarray, SWIG_POINTER_DISOWN |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_strconstarray" "', argument " "1"" of type '" "struct strconstarray *""'"); 
    }
    arg1 = (struct strconstarray *)(argp1);
    free((char *) arg1);
    ST(argvi) = &PL_sv_undef;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_argarray_val_set) {
  {
    struct argarray *arg1 = 0 ;
    char **arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: argarray_val_set(self,val);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_argarray, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "argarray_val_set" "', argument " "1"" of type '" "struct argarray *""'"); 
    }
    arg1 = (struct argarray *)(argp1);
    res2 = SWIG_ConvertPtr(ST(1), &argp2,SWIGTYPE_p_p_char, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "argarray_val_set" "', argument " "2"" of type '" "char **""'"); 
    }
    arg2 = (char **)(argp2);
    if (arg1) (arg1)->val = arg2;
    ST(argvi) = &PL_sv_undef;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_argarray_val_get) {
  {
    struct argarray *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    char **result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: argarray_val_get(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_argarray, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "argarray_val_get" "', argument " "1"" of type '" "struct argarray *""'"); 
    }
    arg1 = (struct argarray *)(argp1);
    result = (char **) ((arg1)->val);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_p_char, 0 | 0); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_argarray_len_set) {
  {
    struct argarray *arg1 = 0 ;
    int arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: argarray_len_set(self,len);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_argarray, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "argarray_len_set" "', argument " "1"" of type '" "struct argarray *""'"); 
    }
    arg1 = (struct argarray *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "argarray_len_set" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    if (arg1) (arg1)->len = arg2;
    ST(argvi) = &PL_sv_undef;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_argarray_len_get) {
  {
    struct argarray *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: argarray_len_get(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_argarray, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "argarray_len_get" "', argument " "1"" of type '" "struct argarray *""'"); 
    }
    arg1 = (struct argarray *)(argp1);
    result = (int) ((arg1)->len);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_new_argarray) {
  {
    int argvi = 0;
    struct argarray *result = 0 ;
    dXSARGS;
    
    if ((items < 0) || (items > 0)) {
      SWIG_croak("Usage: new_argarray();");
    }
    result = (struct argarray *)calloc(1, sizeof(struct argarray));
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_argarray, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
    XSRETURN(argvi);
    fail:;
  }
  SWIG_croak_null();
}


XS(_wrap_delete_argarray) {
  {
    struct argarray *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: delete_argarray(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_argarray, SWIG_POINTER_DISOWN |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_argarray" "', argument " "1"" of type '" "struct argarray *""'"); 
    }
    arg1 = (struct argarray *)(argp1);
    free((char *) arg1);
    ST(argvi) = &PL_sv_undef;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_iargarray_val_set) {
  {
    struct iargarray *arg1 = 0 ;
    ipmi_args_t **arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: iargarray_val_set(self,val);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_iargarray, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "iargarray_val_set" "', argument " "1"" of type '" "struct iargarray *""'"); 
    }
    arg1 = (struct iargarray *)(argp1);
    res2 = SWIG_ConvertPtr(ST(1), &argp2,SWIGTYPE_p_p_ipmi_args_t, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "iargarray_val_set" "', argument " "2"" of type '" "ipmi_args_t **""'"); 
    }
    arg2 = (ipmi_args_t **)(argp2);
    if (arg1) (arg1)->val = arg2;
    ST(argvi) = &PL_sv_undef;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_iargarray_val_get) {
  {
    struct iargarray *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    ipmi_args_t **result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: iargarray_val_get(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_iargarray, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "iargarray_val_get" "', argument " "1"" of type '" "struct iargarray *""'"); 
    }
    arg1 = (struct iargarray *)(argp1);
    result = (ipmi_args_t **) ((arg1)->val);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_p_ipmi_args_t, 0 | 0); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_iargarray_len_set) {
  {
    struct iargarray *arg1 = 0 ;
    int arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: iargarray_len_set(self,len);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_iargarray, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "iargarray_len_set" "', argument " "1"" of type '" "struct iargarray *""'"); 
    }
    arg1 = (struct iargarray *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "iargarray_len_set" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    if (arg1) (arg1)->len = arg2;
    ST(argvi) = &PL_sv_undef;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_iargarray_len_get) {
  {
    struct iargarray *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: iargarray_len_get(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_iargarray, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "iargarray_len_get" "', argument " "1"" of type '" "struct iargarray *""'"); 
    }
    arg1 = (struct iargarray *)(argp1);
    result = (int) ((arg1)->len);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_new_iargarray) {
  {
    int argvi = 0;
    struct iargarray *result = 0 ;
    dXSARGS;
    
    if ((items < 0) || (items > 0)) {
      SWIG_croak("Usage: new_iargarray();");
    }
    result = (struct iargarray *)calloc(1, sizeof(struct iargarray));
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_iargarray, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
    XSRETURN(argvi);
    fail:;
  }
  SWIG_croak_null();
}


XS(_wrap_delete_iargarray) {
  {
    struct iargarray *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: delete_iargarray(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_iargarray, SWIG_POINTER_DISOWN |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_iargarray" "', argument " "1"" of type '" "struct iargarray *""'"); 
    }
    arg1 = (struct iargarray *)(argp1);
    free((char *) arg1);
    ST(argvi) = &PL_sv_undef;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_domain_t_get_name) {
  {
    ipmi_domain_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_domain_t_get_name(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_domain_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_domain_t_get_name" "', argument " "1"" of type '" "ipmi_domain_t *""'"); 
    }
    arg1 = (ipmi_domain_t *)(argp1);
    result = (char *)ipmi_domain_t_get_name(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    free((char*)result);
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_domain_t_get_id) {
  {
    ipmi_domain_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    ipmi_domain_id_t *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_domain_t_get_id(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_domain_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_domain_t_get_id" "', argument " "1"" of type '" "ipmi_domain_t *""'"); 
    }
    arg1 = (ipmi_domain_t *)(argp1);
    result = (ipmi_domain_id_t *)ipmi_domain_t_get_id(arg1);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ipmi_domain_id_t, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_domain_t_get_guid) {
  {
    ipmi_domain_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_domain_t_get_guid(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_domain_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_domain_t_get_guid" "', argument " "1"" of type '" "ipmi_domain_t *""'"); 
    }
    arg1 = (ipmi_domain_t *)(argp1);
    result = (char *)ipmi_domain_t_get_guid(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    free((char*)result);
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_domain_t_close) {
  {
    ipmi_domain_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_domain_t_close(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_domain_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_domain_t_close" "', argument " "1"" of type '" "ipmi_domain_t *""'"); 
    }
    arg1 = (ipmi_domain_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_domain_t_close(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_domain_t_add_connect_change_handler) {
  {
    ipmi_domain_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_domain_t_add_connect_change_handler(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_domain_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_domain_t_add_connect_change_handler" "', argument " "1"" of type '" "ipmi_domain_t *""'"); 
    }
    arg1 = (ipmi_domain_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_domain_t_add_connect_change_handler(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_domain_t_remove_connect_change_handler) {
  {
    ipmi_domain_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_domain_t_remove_connect_change_handler(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_domain_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_domain_t_remove_connect_change_handler" "', argument " "1"" of type '" "ipmi_domain_t *""'"); 
    }
    arg1 = (ipmi_domain_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_domain_t_remove_connect_change_handler(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_domain_t_iterate_connections) {
  {
    ipmi_domain_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_domain_t_iterate_connections(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_domain_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_domain_t_iterate_connections" "', argument " "1"" of type '" "ipmi_domain_t *""'"); 
    }
    arg1 = (ipmi_domain_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_domain_t_iterate_connections(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_domain_t_activate_connection) {
  {
    ipmi_domain_t *arg1 = 0 ;
    int arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_domain_t_activate_connection(self,connection);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_domain_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_domain_t_activate_connection" "', argument " "1"" of type '" "ipmi_domain_t *""'"); 
    }
    arg1 = (ipmi_domain_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_domain_t_activate_connection" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    result = (int)ipmi_domain_t_activate_connection(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_domain_t_is_connection_active) {
  {
    ipmi_domain_t *arg1 = 0 ;
    int arg2 ;
    unsigned int *arg3 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    unsigned int ivalue3 ;
    int argvi = 0;
    SV * _saved[1] ;
    int result;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
      SWIG_croak("Usage: ipmi_domain_t_is_connection_active(self,connection,active);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_domain_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_domain_t_is_connection_active" "', argument " "1"" of type '" "ipmi_domain_t *""'"); 
    }
    arg1 = (ipmi_domain_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_domain_t_is_connection_active" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    {
      SV* tempsv;
      if (!SvROK(ST(2))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(2));
      if (!SvIOK(tempsv)) {
        ivalue3 = 0;
      } else {
        ivalue3 = SvIV(tempsv);
      }
      arg3 = &ivalue3;
    }
    _saved[0] = ST(2);
    result = (int)ipmi_domain_t_is_connection_active(arg1,arg2,arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setiv(tempsv, *arg3);
    }
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_domain_t_is_connection_up) {
  {
    ipmi_domain_t *arg1 = 0 ;
    int arg2 ;
    unsigned int *arg3 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    unsigned int ivalue3 ;
    int argvi = 0;
    SV * _saved[1] ;
    int result;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
      SWIG_croak("Usage: ipmi_domain_t_is_connection_up(self,connection,up);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_domain_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_domain_t_is_connection_up" "', argument " "1"" of type '" "ipmi_domain_t *""'"); 
    }
    arg1 = (ipmi_domain_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_domain_t_is_connection_up" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    {
      SV* tempsv;
      if (!SvROK(ST(2))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(2));
      if (!SvIOK(tempsv)) {
        ivalue3 = 0;
      } else {
        ivalue3 = SvIV(tempsv);
      }
      arg3 = &ivalue3;
    }
    _saved[0] = ST(2);
    result = (int)ipmi_domain_t_is_connection_up(arg1,arg2,arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setiv(tempsv, *arg3);
    }
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_domain_t_num_connection_ports) {
  {
    ipmi_domain_t *arg1 = 0 ;
    int arg2 ;
    unsigned int *arg3 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    unsigned int ivalue3 ;
    int argvi = 0;
    SV * _saved[1] ;
    int result;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
      SWIG_croak("Usage: ipmi_domain_t_num_connection_ports(self,connection,ports);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_domain_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_domain_t_num_connection_ports" "', argument " "1"" of type '" "ipmi_domain_t *""'"); 
    }
    arg1 = (ipmi_domain_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_domain_t_num_connection_ports" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    {
      SV* tempsv;
      if (!SvROK(ST(2))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(2));
      if (!SvIOK(tempsv)) {
        ivalue3 = 0;
      } else {
        ivalue3 = SvIV(tempsv);
      }
      arg3 = &ivalue3;
    }
    _saved[0] = ST(2);
    result = (int)ipmi_domain_t_num_connection_ports(arg1,arg2,arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setiv(tempsv, *arg3);
    }
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_domain_t_is_connection_port_up) {
  {
    ipmi_domain_t *arg1 = 0 ;
    int arg2 ;
    int arg3 ;
    unsigned int *arg4 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    unsigned int ivalue4 ;
    int argvi = 0;
    SV * _saved[1] ;
    int result;
    dXSARGS;
    
    if ((items < 4) || (items > 4)) {
      SWIG_croak("Usage: ipmi_domain_t_is_connection_port_up(self,connection,port,up);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_domain_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_domain_t_is_connection_port_up" "', argument " "1"" of type '" "ipmi_domain_t *""'"); 
    }
    arg1 = (ipmi_domain_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_domain_t_is_connection_port_up" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    ecode3 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(2), &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ipmi_domain_t_is_connection_port_up" "', argument " "3"" of type '" "int""'");
    } 
    arg3 = (int)(val3);
    {
      SV* tempsv;
      if (!SvROK(ST(3))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(3));
      if (!SvIOK(tempsv)) {
        ivalue4 = 0;
      } else {
        ivalue4 = SvIV(tempsv);
      }
      arg4 = &ivalue4;
    }
    _saved[0] = ST(3);
    result = (int)ipmi_domain_t_is_connection_port_up(arg1,arg2,arg3,arg4);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setiv(tempsv, *arg4);
    }
    
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_domain_t_get_port_info) {
  {
    ipmi_domain_t *arg1 = 0 ;
    int arg2 ;
    int arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
      SWIG_croak("Usage: ipmi_domain_t_get_port_info(self,connection,port);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_domain_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_domain_t_get_port_info" "', argument " "1"" of type '" "ipmi_domain_t *""'"); 
    }
    arg1 = (ipmi_domain_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_domain_t_get_port_info" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    ecode3 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(2), &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ipmi_domain_t_get_port_info" "', argument " "3"" of type '" "int""'");
    } 
    arg3 = (int)(val3);
    result = (char *)ipmi_domain_t_get_port_info(arg1,arg2,arg3);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    
    
    free((char*)result);
    XSRETURN(argvi);
    fail:;
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_domain_t_get_connection_args) {
  {
    ipmi_domain_t *arg1 = 0 ;
    int arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    ipmi_args_t *result = 0 ;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_domain_t_get_connection_args(self,connection);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_domain_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_domain_t_get_connection_args" "', argument " "1"" of type '" "ipmi_domain_t *""'"); 
    }
    arg1 = (ipmi_domain_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_domain_t_get_connection_args" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    result = (ipmi_args_t *)ipmi_domain_t_get_connection_args(arg1,arg2);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ipmi_args_t, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_domain_t_get_connection_type) {
  {
    ipmi_domain_t *arg1 = 0 ;
    int arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_domain_t_get_connection_type(self,connection);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_domain_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_domain_t_get_connection_type" "', argument " "1"" of type '" "ipmi_domain_t *""'"); 
    }
    arg1 = (ipmi_domain_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_domain_t_get_connection_type" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    result = (char *)ipmi_domain_t_get_connection_type(arg1,arg2);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_domain_t_add_entity_update_handler) {
  {
    ipmi_domain_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_domain_t_add_entity_update_handler(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_domain_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_domain_t_add_entity_update_handler" "', argument " "1"" of type '" "ipmi_domain_t *""'"); 
    }
    arg1 = (ipmi_domain_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_domain_t_add_entity_update_handler(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_domain_t_remove_entity_update_handler) {
  {
    ipmi_domain_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_domain_t_remove_entity_update_handler(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_domain_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_domain_t_remove_entity_update_handler" "', argument " "1"" of type '" "ipmi_domain_t *""'"); 
    }
    arg1 = (ipmi_domain_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_domain_t_remove_entity_update_handler(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_domain_t_iterate_entities) {
  {
    ipmi_domain_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_domain_t_iterate_entities(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_domain_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_domain_t_iterate_entities" "', argument " "1"" of type '" "ipmi_domain_t *""'"); 
    }
    arg1 = (ipmi_domain_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_domain_t_iterate_entities(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_domain_t_add_mc_update_handler) {
  {
    ipmi_domain_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_domain_t_add_mc_update_handler(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_domain_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_domain_t_add_mc_update_handler" "', argument " "1"" of type '" "ipmi_domain_t *""'"); 
    }
    arg1 = (ipmi_domain_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_domain_t_add_mc_update_handler(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_domain_t_remove_mc_update_handler) {
  {
    ipmi_domain_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_domain_t_remove_mc_update_handler(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_domain_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_domain_t_remove_mc_update_handler" "', argument " "1"" of type '" "ipmi_domain_t *""'"); 
    }
    arg1 = (ipmi_domain_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_domain_t_remove_mc_update_handler(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_domain_t_iterate_mcs) {
  {
    ipmi_domain_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_domain_t_iterate_mcs(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_domain_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_domain_t_iterate_mcs" "', argument " "1"" of type '" "ipmi_domain_t *""'"); 
    }
    arg1 = (ipmi_domain_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_domain_t_iterate_mcs(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_domain_t_get_type) {
  {
    ipmi_domain_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_domain_t_get_type(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_domain_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_domain_t_get_type" "', argument " "1"" of type '" "ipmi_domain_t *""'"); 
    }
    arg1 = (ipmi_domain_t *)(argp1);
    result = (char *)ipmi_domain_t_get_type(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_domain_t_start_ipmb_mc_scan) {
  {
    ipmi_domain_t *arg1 = 0 ;
    int arg2 ;
    int arg3 ;
    int arg4 ;
    swig_cb *arg5 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    int val4 ;
    int ecode4 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 4) || (items > 5)) {
      SWIG_croak("Usage: ipmi_domain_t_start_ipmb_mc_scan(self,channel,start_addr,end_addr,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_domain_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_domain_t_start_ipmb_mc_scan" "', argument " "1"" of type '" "ipmi_domain_t *""'"); 
    }
    arg1 = (ipmi_domain_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_domain_t_start_ipmb_mc_scan" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    ecode3 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(2), &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ipmi_domain_t_start_ipmb_mc_scan" "', argument " "3"" of type '" "int""'");
    } 
    arg3 = (int)(val3);
    ecode4 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(3), &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "ipmi_domain_t_start_ipmb_mc_scan" "', argument " "4"" of type '" "int""'");
    } 
    arg4 = (int)(val4);
    if (items > 4) {
      {
        if (!SvROK(ST(4)))
        croak("Argument 5 is not a reference.");
        arg5 = ST(4);
      }
    }
    result = (int)ipmi_domain_t_start_ipmb_mc_scan(arg1,arg2,arg3,arg4,arg5);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_domain_t_start_full_ipmb_scan) {
  {
    ipmi_domain_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_domain_t_start_full_ipmb_scan(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_domain_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_domain_t_start_full_ipmb_scan" "', argument " "1"" of type '" "ipmi_domain_t *""'"); 
    }
    arg1 = (ipmi_domain_t *)(argp1);
    ipmi_domain_t_start_full_ipmb_scan(arg1);
    ST(argvi) = &PL_sv_undef;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_domain_t_send_command_addr) {
  {
    ipmi_domain_t *arg1 = 0 ;
    char *arg2 = 0 ;
    int arg3 ;
    int arg4 ;
    int arg5 ;
    intarray arg6 ;
    swig_cb *arg7 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 ;
    char *buf2 = 0 ;
    int alloc2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    int val4 ;
    int ecode4 = 0 ;
    int val5 ;
    int ecode5 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    {
      (&arg6)->val = NULL;
    }
    if ((items < 6) || (items > 7)) {
      SWIG_croak("Usage: ipmi_domain_t_send_command_addr(self,addr,lun,netfn,cmd,msg_data,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_domain_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_domain_t_send_command_addr" "', argument " "1"" of type '" "ipmi_domain_t *""'"); 
    }
    arg1 = (ipmi_domain_t *)(argp1);
    res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2);
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ipmi_domain_t_send_command_addr" "', argument " "2"" of type '" "char *""'");
    }
    arg2 = (char *)(buf2);
    ecode3 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(2), &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ipmi_domain_t_send_command_addr" "', argument " "3"" of type '" "int""'");
    } 
    arg3 = (int)(val3);
    ecode4 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(3), &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "ipmi_domain_t_send_command_addr" "', argument " "4"" of type '" "int""'");
    } 
    arg4 = (int)(val4);
    ecode5 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(4), &val5);
    if (!SWIG_IsOK(ecode5)) {
      SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "ipmi_domain_t_send_command_addr" "', argument " "5"" of type '" "int""'");
    } 
    arg5 = (int)(val5);
    {
      AV *tempav;
      I32 len;
      int i;
      SV  **tv;
      if (!SvROK(ST(5)))
      croak("Argument 6 is not a reference.");
      if (SvTYPE(SvRV(ST(5))) != SVt_PVAV)
      croak("Argument 6 is not an array.");
      tempav = (AV*)SvRV(ST(5));
      len = av_len(tempav);
      (&arg6)->val = (int *) malloc((len+2)*sizeof(int));
      (&arg6)->len = len + 1;
      
      for (i = 0; i <= len; i++) {
        tv = av_fetch(tempav, i, 0);
        (&arg6)->val[i] = SvIV(*tv);
      }
    }
    if (items > 6) {
      {
        if (!SvROK(ST(6)))
        croak("Argument 7 is not a reference.");
        arg7 = ST(6);
      }
    }
    result = (int)ipmi_domain_t_send_command_addr(arg1,arg2,arg3,arg4,arg5,arg6,arg7);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
    
    
    
    {
      if ((&arg6)->val)
      free((&arg6)->val);
    }
    
    XSRETURN(argvi);
    fail:;
    
    if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
    
    
    
    {
      if ((&arg6)->val)
      free((&arg6)->val);
    }
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_domain_t_detect_presence_changes) {
  {
    ipmi_domain_t *arg1 = 0 ;
    int arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 2)) {
      SWIG_croak("Usage: ipmi_domain_t_detect_presence_changes(self,force);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_domain_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_domain_t_detect_presence_changes" "', argument " "1"" of type '" "ipmi_domain_t *""'"); 
    }
    arg1 = (ipmi_domain_t *)(argp1);
    if (items > 1) {
      ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_domain_t_detect_presence_changes" "', argument " "2"" of type '" "int""'");
      } 
      arg2 = (int)(val2);
    }
    result = (int)ipmi_domain_t_detect_presence_changes(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_domain_t_set_sel_rescan_time) {
  {
    ipmi_domain_t *arg1 = 0 ;
    int arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_domain_t_set_sel_rescan_time(self,seconds);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_domain_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_domain_t_set_sel_rescan_time" "', argument " "1"" of type '" "ipmi_domain_t *""'"); 
    }
    arg1 = (ipmi_domain_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_domain_t_set_sel_rescan_time" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    ipmi_domain_t_set_sel_rescan_time(arg1,arg2);
    ST(argvi) = &PL_sv_undef;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_domain_t_get_sel_rescan_time) {
  {
    ipmi_domain_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_domain_t_get_sel_rescan_time(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_domain_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_domain_t_get_sel_rescan_time" "', argument " "1"" of type '" "ipmi_domain_t *""'"); 
    }
    arg1 = (ipmi_domain_t *)(argp1);
    result = (int)ipmi_domain_t_get_sel_rescan_time(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_domain_t_set_ipmb_rescan_time) {
  {
    ipmi_domain_t *arg1 = 0 ;
    int arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_domain_t_set_ipmb_rescan_time(self,seconds);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_domain_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_domain_t_set_ipmb_rescan_time" "', argument " "1"" of type '" "ipmi_domain_t *""'"); 
    }
    arg1 = (ipmi_domain_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_domain_t_set_ipmb_rescan_time" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    ipmi_domain_t_set_ipmb_rescan_time(arg1,arg2);
    ST(argvi) = &PL_sv_undef;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_domain_t_get_ipmb_rescan_time) {
  {
    ipmi_domain_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_domain_t_get_ipmb_rescan_time(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_domain_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_domain_t_get_ipmb_rescan_time" "', argument " "1"" of type '" "ipmi_domain_t *""'"); 
    }
    arg1 = (ipmi_domain_t *)(argp1);
    result = (int)ipmi_domain_t_get_ipmb_rescan_time(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_domain_t_add_event_handler) {
  {
    ipmi_domain_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_domain_t_add_event_handler(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_domain_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_domain_t_add_event_handler" "', argument " "1"" of type '" "ipmi_domain_t *""'"); 
    }
    arg1 = (ipmi_domain_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_domain_t_add_event_handler(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_domain_t_remove_event_handler) {
  {
    ipmi_domain_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_domain_t_remove_event_handler(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_domain_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_domain_t_remove_event_handler" "', argument " "1"" of type '" "ipmi_domain_t *""'"); 
    }
    arg1 = (ipmi_domain_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_domain_t_remove_event_handler(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_domain_t_first_event) {
  {
    ipmi_domain_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    ipmi_event_t *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_domain_t_first_event(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_domain_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_domain_t_first_event" "', argument " "1"" of type '" "ipmi_domain_t *""'"); 
    }
    arg1 = (ipmi_domain_t *)(argp1);
    result = (ipmi_event_t *)ipmi_domain_t_first_event(arg1);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ipmi_event_t, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_domain_t_last_event) {
  {
    ipmi_domain_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    ipmi_event_t *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_domain_t_last_event(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_domain_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_domain_t_last_event" "', argument " "1"" of type '" "ipmi_domain_t *""'"); 
    }
    arg1 = (ipmi_domain_t *)(argp1);
    result = (ipmi_event_t *)ipmi_domain_t_last_event(arg1);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ipmi_event_t, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_domain_t_next_event) {
  {
    ipmi_domain_t *arg1 = 0 ;
    ipmi_event_t *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    int argvi = 0;
    ipmi_event_t *result = 0 ;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_domain_t_next_event(self,event);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_domain_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_domain_t_next_event" "', argument " "1"" of type '" "ipmi_domain_t *""'"); 
    }
    arg1 = (ipmi_domain_t *)(argp1);
    res2 = SWIG_ConvertPtr(ST(1), &argp2,SWIGTYPE_p_ipmi_event_t, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ipmi_domain_t_next_event" "', argument " "2"" of type '" "ipmi_event_t *""'"); 
    }
    arg2 = (ipmi_event_t *)(argp2);
    result = (ipmi_event_t *)ipmi_domain_t_next_event(arg1,arg2);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ipmi_event_t, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_domain_t_prev_event) {
  {
    ipmi_domain_t *arg1 = 0 ;
    ipmi_event_t *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    int argvi = 0;
    ipmi_event_t *result = 0 ;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_domain_t_prev_event(self,event);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_domain_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_domain_t_prev_event" "', argument " "1"" of type '" "ipmi_domain_t *""'"); 
    }
    arg1 = (ipmi_domain_t *)(argp1);
    res2 = SWIG_ConvertPtr(ST(1), &argp2,SWIGTYPE_p_ipmi_event_t, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ipmi_domain_t_prev_event" "', argument " "2"" of type '" "ipmi_event_t *""'"); 
    }
    arg2 = (ipmi_event_t *)(argp2);
    result = (ipmi_event_t *)ipmi_domain_t_prev_event(arg1,arg2);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ipmi_event_t, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_domain_t_sel_count) {
  {
    ipmi_domain_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_domain_t_sel_count(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_domain_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_domain_t_sel_count" "', argument " "1"" of type '" "ipmi_domain_t *""'"); 
    }
    arg1 = (ipmi_domain_t *)(argp1);
    result = (int)ipmi_domain_t_sel_count(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_domain_t_sel_entries_used) {
  {
    ipmi_domain_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_domain_t_sel_entries_used(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_domain_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_domain_t_sel_entries_used" "', argument " "1"" of type '" "ipmi_domain_t *""'"); 
    }
    arg1 = (ipmi_domain_t *)(argp1);
    result = (int)ipmi_domain_t_sel_entries_used(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_domain_t_reread_sels) {
  {
    ipmi_domain_t *arg1 = 0 ;
    swig_cb *arg2 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 2)) {
      SWIG_croak("Usage: ipmi_domain_t_reread_sels(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_domain_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_domain_t_reread_sels" "', argument " "1"" of type '" "ipmi_domain_t *""'"); 
    }
    arg1 = (ipmi_domain_t *)(argp1);
    if (items > 1) {
      {
        if (!SvROK(ST(1)))
        croak("Argument 2 is not a reference.");
        arg2 = ST(1);
      }
    }
    result = (int)ipmi_domain_t_reread_sels(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_domain_t_fru_alloc) {
  {
    ipmi_domain_t *arg1 = 0 ;
    int arg2 ;
    int arg3 ;
    int arg4 ;
    int arg5 ;
    int arg6 ;
    int arg7 ;
    swig_cb *arg8 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    int val4 ;
    int ecode4 = 0 ;
    int val5 ;
    int ecode5 = 0 ;
    int val6 ;
    int ecode6 = 0 ;
    int val7 ;
    int ecode7 = 0 ;
    int argvi = 0;
    ipmi_fru_t *result = 0 ;
    dXSARGS;
    
    if ((items < 7) || (items > 8)) {
      SWIG_croak("Usage: ipmi_domain_t_fru_alloc(self,is_logical,device_address,device_id,lun,private_bus,channel,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_domain_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_domain_t_fru_alloc" "', argument " "1"" of type '" "ipmi_domain_t *""'"); 
    }
    arg1 = (ipmi_domain_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_domain_t_fru_alloc" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    ecode3 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(2), &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ipmi_domain_t_fru_alloc" "', argument " "3"" of type '" "int""'");
    } 
    arg3 = (int)(val3);
    ecode4 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(3), &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "ipmi_domain_t_fru_alloc" "', argument " "4"" of type '" "int""'");
    } 
    arg4 = (int)(val4);
    ecode5 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(4), &val5);
    if (!SWIG_IsOK(ecode5)) {
      SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "ipmi_domain_t_fru_alloc" "', argument " "5"" of type '" "int""'");
    } 
    arg5 = (int)(val5);
    ecode6 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(5), &val6);
    if (!SWIG_IsOK(ecode6)) {
      SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "ipmi_domain_t_fru_alloc" "', argument " "6"" of type '" "int""'");
    } 
    arg6 = (int)(val6);
    ecode7 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(6), &val7);
    if (!SWIG_IsOK(ecode7)) {
      SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "ipmi_domain_t_fru_alloc" "', argument " "7"" of type '" "int""'");
    } 
    arg7 = (int)(val7);
    if (items > 7) {
      {
        if (!SvROK(ST(7)))
        croak("Argument 8 is not a reference.");
        arg8 = ST(7);
      }
    }
    result = (ipmi_fru_t *)ipmi_domain_t_fru_alloc(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ipmi_fru_t, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
    
    
    
    
    
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
    
    
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_domain_t_get_pet) {
  {
    ipmi_domain_t *arg1 = 0 ;
    int arg2 ;
    int arg3 ;
    char *arg4 = 0 ;
    char *arg5 = 0 ;
    int arg6 ;
    int arg7 ;
    int arg8 ;
    int arg9 ;
    swig_cb *arg10 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    int res4 ;
    char *buf4 = 0 ;
    int alloc4 = 0 ;
    int res5 ;
    char *buf5 = 0 ;
    int alloc5 = 0 ;
    int val6 ;
    int ecode6 = 0 ;
    int val7 ;
    int ecode7 = 0 ;
    int val8 ;
    int ecode8 = 0 ;
    int val9 ;
    int ecode9 = 0 ;
    int argvi = 0;
    ipmi_pet_t *result = 0 ;
    dXSARGS;
    
    if ((items < 9) || (items > 10)) {
      SWIG_croak("Usage: ipmi_domain_t_get_pet(self,connection,channel,ip_addr,mac_addr,eft_sel,policy_num,apt_sel,lan_dest_sel,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_domain_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_domain_t_get_pet" "', argument " "1"" of type '" "ipmi_domain_t *""'"); 
    }
    arg1 = (ipmi_domain_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_domain_t_get_pet" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    ecode3 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(2), &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ipmi_domain_t_get_pet" "', argument " "3"" of type '" "int""'");
    } 
    arg3 = (int)(val3);
    res4 = SWIG_AsCharPtrAndSize(ST(3), &buf4, NULL, &alloc4);
    if (!SWIG_IsOK(res4)) {
      SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "ipmi_domain_t_get_pet" "', argument " "4"" of type '" "char *""'");
    }
    arg4 = (char *)(buf4);
    res5 = SWIG_AsCharPtrAndSize(ST(4), &buf5, NULL, &alloc5);
    if (!SWIG_IsOK(res5)) {
      SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "ipmi_domain_t_get_pet" "', argument " "5"" of type '" "char *""'");
    }
    arg5 = (char *)(buf5);
    ecode6 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(5), &val6);
    if (!SWIG_IsOK(ecode6)) {
      SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "ipmi_domain_t_get_pet" "', argument " "6"" of type '" "int""'");
    } 
    arg6 = (int)(val6);
    ecode7 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(6), &val7);
    if (!SWIG_IsOK(ecode7)) {
      SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "ipmi_domain_t_get_pet" "', argument " "7"" of type '" "int""'");
    } 
    arg7 = (int)(val7);
    ecode8 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(7), &val8);
    if (!SWIG_IsOK(ecode8)) {
      SWIG_exception_fail(SWIG_ArgError(ecode8), "in method '" "ipmi_domain_t_get_pet" "', argument " "8"" of type '" "int""'");
    } 
    arg8 = (int)(val8);
    ecode9 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(8), &val9);
    if (!SWIG_IsOK(ecode9)) {
      SWIG_exception_fail(SWIG_ArgError(ecode9), "in method '" "ipmi_domain_t_get_pet" "', argument " "9"" of type '" "int""'");
    } 
    arg9 = (int)(val9);
    if (items > 9) {
      {
        if (!SvROK(ST(9)))
        croak("Argument 10 is not a reference.");
        arg10 = ST(9);
      }
    }
    result = (ipmi_pet_t *)ipmi_domain_t_get_pet(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ipmi_pet_t, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
    
    
    
    if (alloc4 == SWIG_NEWOBJ) free((char*)buf4);
    if (alloc5 == SWIG_NEWOBJ) free((char*)buf5);
    
    
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
    if (alloc4 == SWIG_NEWOBJ) free((char*)buf4);
    if (alloc5 == SWIG_NEWOBJ) free((char*)buf5);
    
    
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_domain_t_create_sol) {
  {
    ipmi_domain_t *arg1 = 0 ;
    int arg2 ;
    swig_cb *arg3 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    ipmi_sol_conn_t *result = 0 ;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
      SWIG_croak("Usage: ipmi_domain_t_create_sol(self,connection,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_domain_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_domain_t_create_sol" "', argument " "1"" of type '" "ipmi_domain_t *""'"); 
    }
    arg1 = (ipmi_domain_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_domain_t_create_sol" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    {
      if (!SvROK(ST(2)))
      croak("Argument 3 is not a reference.");
      arg3 = ST(2);
    }
    result = (ipmi_sol_conn_t *)ipmi_domain_t_create_sol(arg1,arg2,arg3);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ipmi_sol_conn_t, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_delete_ipmi_domain_id_t) {
  {
    ipmi_domain_id_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: delete_ipmi_domain_id_t(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_domain_id_t, SWIG_POINTER_DISOWN |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_ipmi_domain_id_t" "', argument " "1"" of type '" "ipmi_domain_id_t *""'"); 
    }
    arg1 = (ipmi_domain_id_t *)(argp1);
    delete_ipmi_domain_id_t(arg1);
    ST(argvi) = &PL_sv_undef;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_domain_id_t_cmp) {
  {
    ipmi_domain_id_t *arg1 = 0 ;
    ipmi_domain_id_t *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_domain_id_t_cmp(self,other);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_domain_id_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_domain_id_t_cmp" "', argument " "1"" of type '" "ipmi_domain_id_t *""'"); 
    }
    arg1 = (ipmi_domain_id_t *)(argp1);
    res2 = SWIG_ConvertPtr(ST(1), &argp2,SWIGTYPE_p_ipmi_domain_id_t, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ipmi_domain_id_t_cmp" "', argument " "2"" of type '" "ipmi_domain_id_t *""'"); 
    }
    arg2 = (ipmi_domain_id_t *)(argp2);
    result = (int)ipmi_domain_id_t_cmp(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_domain_id_t_to_domain) {
  {
    ipmi_domain_id_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_domain_id_t_to_domain(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_domain_id_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_domain_id_t_to_domain" "', argument " "1"" of type '" "ipmi_domain_id_t *""'"); 
    }
    arg1 = (ipmi_domain_id_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_domain_id_t_to_domain(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_delete_ipmi_args_t) {
  {
    ipmi_args_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: delete_ipmi_args_t(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_args_t, SWIG_POINTER_DISOWN |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_ipmi_args_t" "', argument " "1"" of type '" "ipmi_args_t *""'"); 
    }
    arg1 = (ipmi_args_t *)(argp1);
    delete_ipmi_args_t(arg1);
    ST(argvi) = &PL_sv_undef;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_args_t_get_type) {
  {
    ipmi_args_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_args_t_get_type(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_args_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_args_t_get_type" "', argument " "1"" of type '" "ipmi_args_t *""'"); 
    }
    arg1 = (ipmi_args_t *)(argp1);
    result = (char *)ipmi_args_t_get_type(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_args_t_get_val) {
  {
    ipmi_args_t *arg1 = 0 ;
    int arg2 ;
    char **arg3 = 0 ;
    char **arg4 = 0 ;
    char **arg5 = 0 ;
    char **arg6 = 0 ;
    strconstarray *arg7 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    char *svalue3 ;
    char *svalue4 ;
    char *svalue5 ;
    char *svalue6 ;
    strconstarray argval7 ;
    int argvi = 0;
    SV * _saved[4] ;
    int result;
    dXSARGS;
    
    if ((items < 7) || (items > 7)) {
      SWIG_croak("Usage: ipmi_args_t_get_val(self,argnum,name,type,help,value,range);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_args_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_args_t_get_val" "', argument " "1"" of type '" "ipmi_args_t *""'"); 
    }
    arg1 = (ipmi_args_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_args_t_get_val" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    {
      SV* tempsv;
      if (!SvROK(ST(2))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(2));
      if (!SvOK(tempsv)) {
        svalue3 = NULL;
      } else {
        svalue3 = SvPV_nolen(tempsv);
      }
      arg3 = &svalue3;
    }
    {
      SV* tempsv;
      if (!SvROK(ST(3))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(3));
      if (!SvOK(tempsv)) {
        svalue4 = NULL;
      } else {
        svalue4 = SvPV_nolen(tempsv);
      }
      arg4 = &svalue4;
    }
    {
      SV* tempsv;
      if (!SvROK(ST(4))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(4));
      if (!SvOK(tempsv)) {
        svalue5 = NULL;
      } else {
        svalue5 = SvPV_nolen(tempsv);
      }
      arg5 = &svalue5;
    }
    {
      if (!SvROK(ST(5))) {
        croak("expected a reference\n");
      }
      svalue6 = NULL;
      arg6 = &svalue6;
    }
    {
      arg7 = &argval7;
      if (!SvROK(ST(6)))
      croak("Argument 7 is not a reference.");
      if (SvTYPE(SvRV(ST(6))) != SVt_PVAV)
      croak("Argument 7 is not an array.");
      arg7->len = 0;
      arg7->val = NULL;
    }
    _saved[0] = ST(2);
    _saved[1] = ST(3);
    _saved[2] = ST(4);
    _saved[3] = ST(5);
    result = (int)ipmi_args_t_get_val(arg1,arg2,(char const **)arg3,(char const **)arg4,(char const **)arg5,arg6,arg7);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setpv(tempsv, *arg3);
    }
    {
      SV *tempsv;
      tempsv = SvRV(_saved[1]);
      sv_setpv(tempsv, *arg4);
    }
    {
      SV *tempsv;
      tempsv = SvRV(_saved[2]);
      sv_setpv(tempsv, *arg5);
    }
    {
      SV *tempsv;
      tempsv = SvRV(_saved[3]);
      sv_setpv(tempsv, *arg6);
      free(*arg6);
    }
    
    
    
    
    
    
    {
      free(arg7->val);
    }
    XSRETURN(argvi);
    fail:;
    
    
    
    
    
    
    {
      free(arg7->val);
    }
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_args_t_set_val) {
  {
    ipmi_args_t *arg1 = 0 ;
    int arg2 ;
    char *arg3 = 0 ;
    char *arg4 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int res3 ;
    char *buf3 = 0 ;
    int alloc3 = 0 ;
    int res4 ;
    char *buf4 = 0 ;
    int alloc4 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 4) || (items > 4)) {
      SWIG_croak("Usage: ipmi_args_t_set_val(self,argnum,name,value);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_args_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_args_t_set_val" "', argument " "1"" of type '" "ipmi_args_t *""'"); 
    }
    arg1 = (ipmi_args_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_args_t_set_val" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    res3 = SWIG_AsCharPtrAndSize(ST(2), &buf3, NULL, &alloc3);
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "ipmi_args_t_set_val" "', argument " "3"" of type '" "char const *""'");
    }
    arg3 = (char *)(buf3);
    res4 = SWIG_AsCharPtrAndSize(ST(3), &buf4, NULL, &alloc4);
    if (!SWIG_IsOK(res4)) {
      SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "ipmi_args_t_set_val" "', argument " "4"" of type '" "char const *""'");
    }
    arg4 = (char *)(buf4);
    result = (int)ipmi_args_t_set_val(arg1,arg2,(char const *)arg3,(char const *)arg4);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    if (alloc3 == SWIG_NEWOBJ) free((char*)buf3);
    if (alloc4 == SWIG_NEWOBJ) free((char*)buf4);
    XSRETURN(argvi);
    fail:;
    
    
    if (alloc3 == SWIG_NEWOBJ) free((char*)buf3);
    if (alloc4 == SWIG_NEWOBJ) free((char*)buf4);
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_get_domain) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    ipmi_domain_t *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_get_domain(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_get_domain" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (ipmi_domain_t *)ipmi_entity_t_get_domain(arg1);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ipmi_domain_t, 0 | SWIG_SHADOW); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_get_name) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_get_name(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_get_name" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (char *)ipmi_entity_t_get_name(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    free((char*)result);
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_get_id) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    ipmi_entity_id_t *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_get_id(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_get_id" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (ipmi_entity_id_t *)ipmi_entity_t_get_id(arg1);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ipmi_entity_id_t, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_iterate_children) {
  {
    ipmi_entity_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_entity_t_iterate_children(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_iterate_children" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_entity_t_iterate_children(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_iterate_parents) {
  {
    ipmi_entity_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_entity_t_iterate_parents(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_iterate_parents" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_entity_t_iterate_parents(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_iterate_sensors) {
  {
    ipmi_entity_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_entity_t_iterate_sensors(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_iterate_sensors" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_entity_t_iterate_sensors(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_iterate_controls) {
  {
    ipmi_entity_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_entity_t_iterate_controls(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_iterate_controls" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_entity_t_iterate_controls(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_add_presence_handler) {
  {
    ipmi_entity_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_entity_t_add_presence_handler(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_add_presence_handler" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_entity_t_add_presence_handler(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_remove_presence_handler) {
  {
    ipmi_entity_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_entity_t_remove_presence_handler(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_remove_presence_handler" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_entity_t_remove_presence_handler(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_add_sensor_update_handler) {
  {
    ipmi_entity_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_entity_t_add_sensor_update_handler(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_add_sensor_update_handler" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_entity_t_add_sensor_update_handler(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_remove_sensor_update_handler) {
  {
    ipmi_entity_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_entity_t_remove_sensor_update_handler(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_remove_sensor_update_handler" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_entity_t_remove_sensor_update_handler(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_add_control_update_handler) {
  {
    ipmi_entity_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_entity_t_add_control_update_handler(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_add_control_update_handler" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_entity_t_add_control_update_handler(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_remove_control_update_handler) {
  {
    ipmi_entity_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_entity_t_remove_control_update_handler(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_remove_control_update_handler" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_entity_t_remove_control_update_handler(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_add_fru_update_handler) {
  {
    ipmi_entity_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_entity_t_add_fru_update_handler(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_add_fru_update_handler" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_entity_t_add_fru_update_handler(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_remove_fru_update_handler) {
  {
    ipmi_entity_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_entity_t_remove_fru_update_handler(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_remove_fru_update_handler" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_entity_t_remove_fru_update_handler(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_add_fru_update_werr_handler) {
  {
    ipmi_entity_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_entity_t_add_fru_update_werr_handler(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_add_fru_update_werr_handler" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_entity_t_add_fru_update_werr_handler(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_remove_fru_update_werr_handler) {
  {
    ipmi_entity_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_entity_t_remove_fru_update_werr_handler(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_remove_fru_update_werr_handler" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_entity_t_remove_fru_update_werr_handler(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_get_type) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_get_type(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_get_type" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (char *)ipmi_entity_t_get_type(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_is_fru) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_is_fru(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_is_fru" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (int)ipmi_entity_t_is_fru(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_get_id_string) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_get_id_string(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_get_id_string" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (char *)ipmi_entity_t_get_id_string(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    free((char*)result);
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_get_entity_id) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_get_entity_id(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_get_entity_id" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (int)ipmi_entity_t_get_entity_id(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_get_entity_id_string) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_get_entity_id_string(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_get_entity_id_string" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (char *)ipmi_entity_t_get_entity_id_string(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_get_entity_instance) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_get_entity_instance(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_get_entity_instance" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (int)ipmi_entity_t_get_entity_instance(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_get_entity_device_channel) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_get_entity_device_channel(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_get_entity_device_channel" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (int)ipmi_entity_t_get_entity_device_channel(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_get_entity_device_address) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_get_entity_device_address(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_get_entity_device_address" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (int)ipmi_entity_t_get_entity_device_address(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_get_fru) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    ipmi_fru_t *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_get_fru(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_get_fru" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (ipmi_fru_t *)ipmi_entity_t_get_fru(arg1);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ipmi_fru_t, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_get_presence_sensor_always_there) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_get_presence_sensor_always_there(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_get_presence_sensor_always_there" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (int)ipmi_entity_t_get_presence_sensor_always_there(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_is_child) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_is_child(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_is_child" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (int)ipmi_entity_t_is_child(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_is_parent) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_is_parent(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_is_parent" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (int)ipmi_entity_t_is_parent(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_get_channel) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_get_channel(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_get_channel" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (int)ipmi_entity_t_get_channel(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_get_lun) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_get_lun(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_get_lun" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (int)ipmi_entity_t_get_lun(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_get_oem) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_get_oem(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_get_oem" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (int)ipmi_entity_t_get_oem(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_get_access_address) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_get_access_address(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_get_access_address" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (int)ipmi_entity_t_get_access_address(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_get_private_bus_id) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_get_private_bus_id(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_get_private_bus_id" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (int)ipmi_entity_t_get_private_bus_id(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_get_device_type) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_get_device_type(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_get_device_type" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (int)ipmi_entity_t_get_device_type(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_get_device_modifier) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_get_device_modifier(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_get_device_modifier" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (int)ipmi_entity_t_get_device_modifier(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_get_slave_address) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_get_slave_address(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_get_slave_address" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (int)ipmi_entity_t_get_slave_address(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_get_mc_id) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    ipmi_mcid_t *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_get_mc_id(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_get_mc_id" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (ipmi_mcid_t *)ipmi_entity_t_get_mc_id(arg1);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ipmi_mcid_t, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_get_is_logical_fru) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_get_is_logical_fru(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_get_is_logical_fru" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (int)ipmi_entity_t_get_is_logical_fru(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_get_fru_device_id) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_get_fru_device_id(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_get_fru_device_id" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (int)ipmi_entity_t_get_fru_device_id(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_get_ACPI_system_power_notify_required) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_get_ACPI_system_power_notify_required(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_get_ACPI_system_power_notify_required" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (int)ipmi_entity_t_get_ACPI_system_power_notify_required(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_get_ACPI_device_power_notify_required) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_get_ACPI_device_power_notify_required(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_get_ACPI_device_power_notify_required" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (int)ipmi_entity_t_get_ACPI_device_power_notify_required(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_get_controller_logs_init_agent_errors) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_get_controller_logs_init_agent_errors(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_get_controller_logs_init_agent_errors" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (int)ipmi_entity_t_get_controller_logs_init_agent_errors(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_get_log_init_agent_errors_accessing) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_get_log_init_agent_errors_accessing(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_get_log_init_agent_errors_accessing" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (int)ipmi_entity_t_get_log_init_agent_errors_accessing(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_get_global_init) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_get_global_init(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_get_global_init" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (int)ipmi_entity_t_get_global_init(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_get_chassis_device) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_get_chassis_device(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_get_chassis_device" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (int)ipmi_entity_t_get_chassis_device(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_get_bridge) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_get_bridge(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_get_bridge" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (int)ipmi_entity_t_get_bridge(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_get_IPMB_event_generator) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_get_IPMB_event_generator(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_get_IPMB_event_generator" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (int)ipmi_entity_t_get_IPMB_event_generator(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_get_IPMB_event_receiver) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_get_IPMB_event_receiver(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_get_IPMB_event_receiver" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (int)ipmi_entity_t_get_IPMB_event_receiver(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_get_FRU_inventory_device) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_get_FRU_inventory_device(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_get_FRU_inventory_device" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (int)ipmi_entity_t_get_FRU_inventory_device(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_get_SEL_device) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_get_SEL_device(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_get_SEL_device" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (int)ipmi_entity_t_get_SEL_device(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_get_SDR_repository_device) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_get_SDR_repository_device(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_get_SDR_repository_device" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (int)ipmi_entity_t_get_SDR_repository_device(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_get_sensor_device) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_get_sensor_device(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_get_sensor_device" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (int)ipmi_entity_t_get_sensor_device(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_get_address_span) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_get_address_span(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_get_address_span" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (int)ipmi_entity_t_get_address_span(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_get_dlr_id) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_get_dlr_id(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_get_dlr_id" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (char *)ipmi_entity_t_get_dlr_id(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    free((char*)result);
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_is_present) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_is_present(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_is_present" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (int)ipmi_entity_t_is_present(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_get_physical_slot_num) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_get_physical_slot_num(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_get_physical_slot_num" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (int)ipmi_entity_t_get_physical_slot_num(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_is_hot_swappable) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_is_hot_swappable(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_is_hot_swappable" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (int)ipmi_entity_t_is_hot_swappable(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_supports_managed_hot_swap) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_supports_managed_hot_swap(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_supports_managed_hot_swap" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (int)ipmi_entity_t_supports_managed_hot_swap(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_add_hot_swap_handler) {
  {
    ipmi_entity_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_entity_t_add_hot_swap_handler(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_add_hot_swap_handler" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_entity_t_add_hot_swap_handler(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_remove_hot_swap_handler) {
  {
    ipmi_entity_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_entity_t_remove_hot_swap_handler(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_remove_hot_swap_handler" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_entity_t_remove_hot_swap_handler(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_get_hot_swap_state) {
  {
    ipmi_entity_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_entity_t_get_hot_swap_state(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_get_hot_swap_state" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_entity_t_get_hot_swap_state(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_supports_auto_activate_time) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_supports_auto_activate_time(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_supports_auto_activate_time" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (int)ipmi_entity_t_supports_auto_activate_time(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_get_auto_activate_time) {
  {
    ipmi_entity_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_entity_t_get_auto_activate_time(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_get_auto_activate_time" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_entity_t_get_auto_activate_time(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_set_auto_activate_time) {
  {
    ipmi_entity_t *arg1 = 0 ;
    ipmi_timeout_t arg2 ;
    swig_cb *arg3 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 ;
    int res2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 3)) {
      SWIG_croak("Usage: ipmi_entity_t_set_auto_activate_time(self,auto_act,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_set_auto_activate_time" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    {
      res2 = SWIG_ConvertPtr(ST(1), &argp2, SWIGTYPE_p_ipmi_timeout_t,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ipmi_entity_t_set_auto_activate_time" "', argument " "2"" of type '" "ipmi_timeout_t""'"); 
      }  
      if (!argp2) {
        SWIG_exception_fail(SWIG_NullReferenceError, "invalid null reference " "in method '" "ipmi_entity_t_set_auto_activate_time" "', argument " "2"" of type '" "ipmi_timeout_t""'");
      } else {
        arg2 = *((ipmi_timeout_t *)(argp2));
      }
    }
    if (items > 2) {
      {
        if (!SvROK(ST(2)))
        croak("Argument 3 is not a reference.");
        arg3 = ST(2);
      }
    }
    result = (int)ipmi_entity_t_set_auto_activate_time(arg1,arg2,arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_supports_auto_deactivate_time) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_supports_auto_deactivate_time(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_supports_auto_deactivate_time" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (int)ipmi_entity_t_supports_auto_deactivate_time(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_get_auto_deactivate_time) {
  {
    ipmi_entity_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_entity_t_get_auto_deactivate_time(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_get_auto_deactivate_time" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_entity_t_get_auto_deactivate_time(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_set_auto_deactivate_time) {
  {
    ipmi_entity_t *arg1 = 0 ;
    ipmi_timeout_t arg2 ;
    swig_cb *arg3 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 ;
    int res2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 3)) {
      SWIG_croak("Usage: ipmi_entity_t_set_auto_deactivate_time(self,auto_act,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_set_auto_deactivate_time" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    {
      res2 = SWIG_ConvertPtr(ST(1), &argp2, SWIGTYPE_p_ipmi_timeout_t,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ipmi_entity_t_set_auto_deactivate_time" "', argument " "2"" of type '" "ipmi_timeout_t""'"); 
      }  
      if (!argp2) {
        SWIG_exception_fail(SWIG_NullReferenceError, "invalid null reference " "in method '" "ipmi_entity_t_set_auto_deactivate_time" "', argument " "2"" of type '" "ipmi_timeout_t""'");
      } else {
        arg2 = *((ipmi_timeout_t *)(argp2));
      }
    }
    if (items > 2) {
      {
        if (!SvROK(ST(2)))
        croak("Argument 3 is not a reference.");
        arg3 = ST(2);
      }
    }
    result = (int)ipmi_entity_t_set_auto_deactivate_time(arg1,arg2,arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_set_activation_requested) {
  {
    ipmi_entity_t *arg1 = 0 ;
    swig_cb *arg2 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 2)) {
      SWIG_croak("Usage: ipmi_entity_t_set_activation_requested(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_set_activation_requested" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    if (items > 1) {
      {
        if (!SvROK(ST(1)))
        croak("Argument 2 is not a reference.");
        arg2 = ST(1);
      }
    }
    result = (int)ipmi_entity_t_set_activation_requested(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_activate) {
  {
    ipmi_entity_t *arg1 = 0 ;
    swig_cb *arg2 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 2)) {
      SWIG_croak("Usage: ipmi_entity_t_activate(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_activate" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    if (items > 1) {
      {
        if (!SvROK(ST(1)))
        croak("Argument 2 is not a reference.");
        arg2 = ST(1);
      }
    }
    result = (int)ipmi_entity_t_activate(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_deactivate) {
  {
    ipmi_entity_t *arg1 = 0 ;
    swig_cb *arg2 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 2)) {
      SWIG_croak("Usage: ipmi_entity_t_deactivate(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_deactivate" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    if (items > 1) {
      {
        if (!SvROK(ST(1)))
        croak("Argument 2 is not a reference.");
        arg2 = ST(1);
      }
    }
    result = (int)ipmi_entity_t_deactivate(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_t_check_hot_swap_state) {
  {
    ipmi_entity_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_entity_t_check_hot_swap_state(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_t_check_hot_swap_state" "', argument " "1"" of type '" "ipmi_entity_t *""'"); 
    }
    arg1 = (ipmi_entity_t *)(argp1);
    result = (int)ipmi_entity_t_check_hot_swap_state(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_delete_ipmi_entity_id_t) {
  {
    ipmi_entity_id_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: delete_ipmi_entity_id_t(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_id_t, SWIG_POINTER_DISOWN |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_ipmi_entity_id_t" "', argument " "1"" of type '" "ipmi_entity_id_t *""'"); 
    }
    arg1 = (ipmi_entity_id_t *)(argp1);
    delete_ipmi_entity_id_t(arg1);
    ST(argvi) = &PL_sv_undef;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_id_t_cmp) {
  {
    ipmi_entity_id_t *arg1 = 0 ;
    ipmi_entity_id_t *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_entity_id_t_cmp(self,other);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_id_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_id_t_cmp" "', argument " "1"" of type '" "ipmi_entity_id_t *""'"); 
    }
    arg1 = (ipmi_entity_id_t *)(argp1);
    res2 = SWIG_ConvertPtr(ST(1), &argp2,SWIGTYPE_p_ipmi_entity_id_t, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ipmi_entity_id_t_cmp" "', argument " "2"" of type '" "ipmi_entity_id_t *""'"); 
    }
    arg2 = (ipmi_entity_id_t *)(argp2);
    result = (int)ipmi_entity_id_t_cmp(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_entity_id_t_to_entity) {
  {
    ipmi_entity_id_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_entity_id_t_to_entity(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_entity_id_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_entity_id_t_to_entity" "', argument " "1"" of type '" "ipmi_entity_id_t *""'"); 
    }
    arg1 = (ipmi_entity_id_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_entity_id_t_to_entity(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_delete_ipmi_fru_t) {
  {
    ipmi_fru_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: delete_ipmi_fru_t(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_fru_t, SWIG_POINTER_DISOWN |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_ipmi_fru_t" "', argument " "1"" of type '" "ipmi_fru_t *""'"); 
    }
    arg1 = (ipmi_fru_t *)(argp1);
    delete_ipmi_fru_t(arg1);
    ST(argvi) = &PL_sv_undef;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_fru_t_get_domain_id) {
  {
    ipmi_fru_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    ipmi_domain_id_t *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_fru_t_get_domain_id(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_fru_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_fru_t_get_domain_id" "', argument " "1"" of type '" "ipmi_fru_t *""'"); 
    }
    arg1 = (ipmi_fru_t *)(argp1);
    result = (ipmi_domain_id_t *)ipmi_fru_t_get_domain_id(arg1);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ipmi_domain_id_t, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_fru_t_str_to_index) {
  {
    ipmi_fru_t *arg1 = 0 ;
    char *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 ;
    char *buf2 = 0 ;
    int alloc2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_fru_t_str_to_index(self,name);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_fru_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_fru_t_str_to_index" "', argument " "1"" of type '" "ipmi_fru_t *""'"); 
    }
    arg1 = (ipmi_fru_t *)(argp1);
    res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2);
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ipmi_fru_t_str_to_index" "', argument " "2"" of type '" "char *""'");
    }
    arg2 = (char *)(buf2);
    result = (int)ipmi_fru_t_str_to_index(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
    XSRETURN(argvi);
    fail:;
    
    if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_fru_t_get) {
  {
    ipmi_fru_t *arg1 = 0 ;
    int arg2 ;
    int *arg3 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int ivalue3 ;
    int argvi = 0;
    SV * _saved[1] ;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
      SWIG_croak("Usage: ipmi_fru_t_get(self,index,num);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_fru_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_fru_t_get" "', argument " "1"" of type '" "ipmi_fru_t *""'"); 
    }
    arg1 = (ipmi_fru_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_fru_t_get" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    {
      SV* tempsv;
      if (!SvROK(ST(2))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(2));
      if (!SvIOK(tempsv)) {
        ivalue3 = 0;
      } else {
        ivalue3 = SvIV(tempsv);
      }
      arg3 = &ivalue3;
    }
    _saved[0] = ST(2);
    result = (char *)ipmi_fru_t_get(arg1,arg2,arg3);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setiv(tempsv, *arg3);
    }
    
    
    
    free((char*)result);
    XSRETURN(argvi);
    fail:;
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_fru_t_get_num_multi_records) {
  {
    ipmi_fru_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_fru_t_get_num_multi_records(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_fru_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_fru_t_get_num_multi_records" "', argument " "1"" of type '" "ipmi_fru_t *""'"); 
    }
    arg1 = (ipmi_fru_t *)(argp1);
    result = (int)ipmi_fru_t_get_num_multi_records(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_fru_t_get_multirecord) {
  {
    ipmi_fru_t *arg1 = 0 ;
    int arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_fru_t_get_multirecord(self,num);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_fru_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_fru_t_get_multirecord" "', argument " "1"" of type '" "ipmi_fru_t *""'"); 
    }
    arg1 = (ipmi_fru_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_fru_t_get_multirecord" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    result = (char *)ipmi_fru_t_get_multirecord(arg1,arg2);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    
    free((char*)result);
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_fru_t_set) {
  {
    ipmi_fru_t *arg1 = 0 ;
    int arg2 ;
    int arg3 ;
    char *arg4 = 0 ;
    char *arg5 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    int res4 ;
    char *buf4 = 0 ;
    int alloc4 = 0 ;
    int res5 ;
    char *buf5 = 0 ;
    int alloc5 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 4) || (items > 5)) {
      SWIG_croak("Usage: ipmi_fru_t_set(self,index,num,type,value);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_fru_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_fru_t_set" "', argument " "1"" of type '" "ipmi_fru_t *""'"); 
    }
    arg1 = (ipmi_fru_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_fru_t_set" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    ecode3 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(2), &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ipmi_fru_t_set" "', argument " "3"" of type '" "int""'");
    } 
    arg3 = (int)(val3);
    res4 = SWIG_AsCharPtrAndSize(ST(3), &buf4, NULL, &alloc4);
    if (!SWIG_IsOK(res4)) {
      SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "ipmi_fru_t_set" "', argument " "4"" of type '" "char *""'");
    }
    arg4 = (char *)(buf4);
    if (items > 4) {
      res5 = SWIG_AsCharPtrAndSize(ST(4), &buf5, NULL, &alloc5);
      if (!SWIG_IsOK(res5)) {
        SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "ipmi_fru_t_set" "', argument " "5"" of type '" "char *""'");
      }
      arg5 = (char *)(buf5);
    }
    result = (int)ipmi_fru_t_set(arg1,arg2,arg3,arg4,arg5);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    
    if (alloc4 == SWIG_NEWOBJ) free((char*)buf4);
    if (alloc5 == SWIG_NEWOBJ) free((char*)buf5);
    XSRETURN(argvi);
    fail:;
    
    
    
    if (alloc4 == SWIG_NEWOBJ) free((char*)buf4);
    if (alloc5 == SWIG_NEWOBJ) free((char*)buf5);
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_fru_t_set_array) {
  {
    ipmi_fru_t *arg1 = 0 ;
    int arg2 ;
    int arg3 ;
    char *arg4 = 0 ;
    intarray arg5 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    int res4 ;
    char *buf4 = 0 ;
    int alloc4 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    {
      (&arg5)->val = NULL;
    }
    if ((items < 5) || (items > 5)) {
      SWIG_croak("Usage: ipmi_fru_t_set_array(self,index,num,type,value);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_fru_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_fru_t_set_array" "', argument " "1"" of type '" "ipmi_fru_t *""'"); 
    }
    arg1 = (ipmi_fru_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_fru_t_set_array" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    ecode3 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(2), &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ipmi_fru_t_set_array" "', argument " "3"" of type '" "int""'");
    } 
    arg3 = (int)(val3);
    res4 = SWIG_AsCharPtrAndSize(ST(3), &buf4, NULL, &alloc4);
    if (!SWIG_IsOK(res4)) {
      SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "ipmi_fru_t_set_array" "', argument " "4"" of type '" "char *""'");
    }
    arg4 = (char *)(buf4);
    {
      AV *tempav;
      I32 len;
      int i;
      SV  **tv;
      if (!SvROK(ST(4)))
      croak("Argument 5 is not a reference.");
      if (SvTYPE(SvRV(ST(4))) != SVt_PVAV)
      croak("Argument 5 is not an array.");
      tempav = (AV*)SvRV(ST(4));
      len = av_len(tempav);
      (&arg5)->val = (int *) malloc((len+2)*sizeof(int));
      (&arg5)->len = len + 1;
      
      for (i = 0; i <= len; i++) {
        tv = av_fetch(tempav, i, 0);
        (&arg5)->val[i] = SvIV(*tv);
      }
    }
    result = (int)ipmi_fru_t_set_array(arg1,arg2,arg3,arg4,arg5);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    
    if (alloc4 == SWIG_NEWOBJ) free((char*)buf4);
    {
      if ((&arg5)->val)
      free((&arg5)->val);
    }
    XSRETURN(argvi);
    fail:;
    
    
    
    if (alloc4 == SWIG_NEWOBJ) free((char*)buf4);
    {
      if ((&arg5)->val)
      free((&arg5)->val);
    }
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_fru_t_set_multirecord) {
  {
    ipmi_fru_t *arg1 = 0 ;
    unsigned int arg2 ;
    unsigned int arg3 ;
    unsigned int arg4 ;
    char *arg5 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    unsigned int val3 ;
    int ecode3 = 0 ;
    unsigned int val4 ;
    int ecode4 = 0 ;
    int res5 ;
    char *buf5 = 0 ;
    int alloc5 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 4) || (items > 5)) {
      SWIG_croak("Usage: ipmi_fru_t_set_multirecord(self,num,type,version,value);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_fru_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_fru_t_set_multirecord" "', argument " "1"" of type '" "ipmi_fru_t *""'"); 
    }
    arg1 = (ipmi_fru_t *)(argp1);
    ecode2 = SWIG_AsVal_unsigned_SS_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_fru_t_set_multirecord" "', argument " "2"" of type '" "unsigned int""'");
    } 
    arg2 = (unsigned int)(val2);
    ecode3 = SWIG_AsVal_unsigned_SS_int SWIG_PERL_CALL_ARGS_2(ST(2), &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ipmi_fru_t_set_multirecord" "', argument " "3"" of type '" "unsigned int""'");
    } 
    arg3 = (unsigned int)(val3);
    ecode4 = SWIG_AsVal_unsigned_SS_int SWIG_PERL_CALL_ARGS_2(ST(3), &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "ipmi_fru_t_set_multirecord" "', argument " "4"" of type '" "unsigned int""'");
    } 
    arg4 = (unsigned int)(val4);
    if (items > 4) {
      res5 = SWIG_AsCharPtrAndSize(ST(4), &buf5, NULL, &alloc5);
      if (!SWIG_IsOK(res5)) {
        SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "ipmi_fru_t_set_multirecord" "', argument " "5"" of type '" "char *""'");
      }
      arg5 = (char *)(buf5);
    }
    result = (int)ipmi_fru_t_set_multirecord(arg1,arg2,arg3,arg4,arg5);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    
    
    if (alloc5 == SWIG_NEWOBJ) free((char*)buf5);
    XSRETURN(argvi);
    fail:;
    
    
    
    
    if (alloc5 == SWIG_NEWOBJ) free((char*)buf5);
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_fru_t_set_multirecord_array) {
  {
    ipmi_fru_t *arg1 = 0 ;
    unsigned int arg2 ;
    unsigned int arg3 ;
    unsigned int arg4 ;
    intarray arg5 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    unsigned int val3 ;
    int ecode3 = 0 ;
    unsigned int val4 ;
    int ecode4 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    {
      (&arg5)->val = NULL;
    }
    if ((items < 5) || (items > 5)) {
      SWIG_croak("Usage: ipmi_fru_t_set_multirecord_array(self,num,type,version,value);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_fru_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_fru_t_set_multirecord_array" "', argument " "1"" of type '" "ipmi_fru_t *""'"); 
    }
    arg1 = (ipmi_fru_t *)(argp1);
    ecode2 = SWIG_AsVal_unsigned_SS_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_fru_t_set_multirecord_array" "', argument " "2"" of type '" "unsigned int""'");
    } 
    arg2 = (unsigned int)(val2);
    ecode3 = SWIG_AsVal_unsigned_SS_int SWIG_PERL_CALL_ARGS_2(ST(2), &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ipmi_fru_t_set_multirecord_array" "', argument " "3"" of type '" "unsigned int""'");
    } 
    arg3 = (unsigned int)(val3);
    ecode4 = SWIG_AsVal_unsigned_SS_int SWIG_PERL_CALL_ARGS_2(ST(3), &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "ipmi_fru_t_set_multirecord_array" "', argument " "4"" of type '" "unsigned int""'");
    } 
    arg4 = (unsigned int)(val4);
    {
      AV *tempav;
      I32 len;
      int i;
      SV  **tv;
      if (!SvROK(ST(4)))
      croak("Argument 5 is not a reference.");
      if (SvTYPE(SvRV(ST(4))) != SVt_PVAV)
      croak("Argument 5 is not an array.");
      tempav = (AV*)SvRV(ST(4));
      len = av_len(tempav);
      (&arg5)->val = (int *) malloc((len+2)*sizeof(int));
      (&arg5)->len = len + 1;
      
      for (i = 0; i <= len; i++) {
        tv = av_fetch(tempav, i, 0);
        (&arg5)->val[i] = SvIV(*tv);
      }
    }
    result = (int)ipmi_fru_t_set_multirecord_array(arg1,arg2,arg3,arg4,arg5);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    
    
    {
      if ((&arg5)->val)
      free((&arg5)->val);
    }
    XSRETURN(argvi);
    fail:;
    
    
    
    
    {
      if ((&arg5)->val)
      free((&arg5)->val);
    }
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_fru_t_add_area) {
  {
    ipmi_fru_t *arg1 = 0 ;
    unsigned int arg2 ;
    unsigned int arg3 ;
    unsigned int arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    unsigned int val3 ;
    int ecode3 = 0 ;
    unsigned int val4 ;
    int ecode4 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 4) || (items > 4)) {
      SWIG_croak("Usage: ipmi_fru_t_add_area(self,area,offset,length);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_fru_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_fru_t_add_area" "', argument " "1"" of type '" "ipmi_fru_t *""'"); 
    }
    arg1 = (ipmi_fru_t *)(argp1);
    ecode2 = SWIG_AsVal_unsigned_SS_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_fru_t_add_area" "', argument " "2"" of type '" "unsigned int""'");
    } 
    arg2 = (unsigned int)(val2);
    ecode3 = SWIG_AsVal_unsigned_SS_int SWIG_PERL_CALL_ARGS_2(ST(2), &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ipmi_fru_t_add_area" "', argument " "3"" of type '" "unsigned int""'");
    } 
    arg3 = (unsigned int)(val3);
    ecode4 = SWIG_AsVal_unsigned_SS_int SWIG_PERL_CALL_ARGS_2(ST(3), &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "ipmi_fru_t_add_area" "', argument " "4"" of type '" "unsigned int""'");
    } 
    arg4 = (unsigned int)(val4);
    result = (int)ipmi_fru_t_add_area(arg1,arg2,arg3,arg4);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_fru_t_delete_area) {
  {
    ipmi_fru_t *arg1 = 0 ;
    int arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_fru_t_delete_area(self,area);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_fru_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_fru_t_delete_area" "', argument " "1"" of type '" "ipmi_fru_t *""'"); 
    }
    arg1 = (ipmi_fru_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_fru_t_delete_area" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    result = (int)ipmi_fru_t_delete_area(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_fru_t_area_get_offset) {
  {
    ipmi_fru_t *arg1 = 0 ;
    unsigned int arg2 ;
    unsigned int *arg3 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    unsigned int ivalue3 ;
    int argvi = 0;
    SV * _saved[1] ;
    int result;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
      SWIG_croak("Usage: ipmi_fru_t_area_get_offset(self,area,offset);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_fru_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_fru_t_area_get_offset" "', argument " "1"" of type '" "ipmi_fru_t *""'"); 
    }
    arg1 = (ipmi_fru_t *)(argp1);
    ecode2 = SWIG_AsVal_unsigned_SS_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_fru_t_area_get_offset" "', argument " "2"" of type '" "unsigned int""'");
    } 
    arg2 = (unsigned int)(val2);
    {
      SV* tempsv;
      if (!SvROK(ST(2))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(2));
      if (!SvIOK(tempsv)) {
        ivalue3 = 0;
      } else {
        ivalue3 = SvIV(tempsv);
      }
      arg3 = &ivalue3;
    }
    _saved[0] = ST(2);
    result = (int)ipmi_fru_t_area_get_offset(arg1,arg2,arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setiv(tempsv, *arg3);
    }
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_fru_t_area_get_length) {
  {
    ipmi_fru_t *arg1 = 0 ;
    unsigned int arg2 ;
    unsigned int *arg3 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    unsigned int ivalue3 ;
    int argvi = 0;
    SV * _saved[1] ;
    int result;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
      SWIG_croak("Usage: ipmi_fru_t_area_get_length(self,area,length);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_fru_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_fru_t_area_get_length" "', argument " "1"" of type '" "ipmi_fru_t *""'"); 
    }
    arg1 = (ipmi_fru_t *)(argp1);
    ecode2 = SWIG_AsVal_unsigned_SS_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_fru_t_area_get_length" "', argument " "2"" of type '" "unsigned int""'");
    } 
    arg2 = (unsigned int)(val2);
    {
      SV* tempsv;
      if (!SvROK(ST(2))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(2));
      if (!SvIOK(tempsv)) {
        ivalue3 = 0;
      } else {
        ivalue3 = SvIV(tempsv);
      }
      arg3 = &ivalue3;
    }
    _saved[0] = ST(2);
    result = (int)ipmi_fru_t_area_get_length(arg1,arg2,arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setiv(tempsv, *arg3);
    }
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_fru_t_area_set_offset) {
  {
    ipmi_fru_t *arg1 = 0 ;
    unsigned int arg2 ;
    unsigned int arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    unsigned int val3 ;
    int ecode3 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
      SWIG_croak("Usage: ipmi_fru_t_area_set_offset(self,area,offset);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_fru_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_fru_t_area_set_offset" "', argument " "1"" of type '" "ipmi_fru_t *""'"); 
    }
    arg1 = (ipmi_fru_t *)(argp1);
    ecode2 = SWIG_AsVal_unsigned_SS_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_fru_t_area_set_offset" "', argument " "2"" of type '" "unsigned int""'");
    } 
    arg2 = (unsigned int)(val2);
    ecode3 = SWIG_AsVal_unsigned_SS_int SWIG_PERL_CALL_ARGS_2(ST(2), &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ipmi_fru_t_area_set_offset" "', argument " "3"" of type '" "unsigned int""'");
    } 
    arg3 = (unsigned int)(val3);
    result = (int)ipmi_fru_t_area_set_offset(arg1,arg2,arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_fru_t_area_set_length) {
  {
    ipmi_fru_t *arg1 = 0 ;
    unsigned int arg2 ;
    unsigned int arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    unsigned int val3 ;
    int ecode3 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
      SWIG_croak("Usage: ipmi_fru_t_area_set_length(self,area,length);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_fru_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_fru_t_area_set_length" "', argument " "1"" of type '" "ipmi_fru_t *""'"); 
    }
    arg1 = (ipmi_fru_t *)(argp1);
    ecode2 = SWIG_AsVal_unsigned_SS_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_fru_t_area_set_length" "', argument " "2"" of type '" "unsigned int""'");
    } 
    arg2 = (unsigned int)(val2);
    ecode3 = SWIG_AsVal_unsigned_SS_int SWIG_PERL_CALL_ARGS_2(ST(2), &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ipmi_fru_t_area_set_length" "', argument " "3"" of type '" "unsigned int""'");
    } 
    arg3 = (unsigned int)(val3);
    result = (int)ipmi_fru_t_area_set_length(arg1,arg2,arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_fru_t_area_get_used_length) {
  {
    ipmi_fru_t *arg1 = 0 ;
    unsigned int arg2 ;
    unsigned int *arg3 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    unsigned int ivalue3 ;
    int argvi = 0;
    SV * _saved[1] ;
    int result;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
      SWIG_croak("Usage: ipmi_fru_t_area_get_used_length(self,area,used_length);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_fru_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_fru_t_area_get_used_length" "', argument " "1"" of type '" "ipmi_fru_t *""'"); 
    }
    arg1 = (ipmi_fru_t *)(argp1);
    ecode2 = SWIG_AsVal_unsigned_SS_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_fru_t_area_get_used_length" "', argument " "2"" of type '" "unsigned int""'");
    } 
    arg2 = (unsigned int)(val2);
    {
      SV* tempsv;
      if (!SvROK(ST(2))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(2));
      if (!SvIOK(tempsv)) {
        ivalue3 = 0;
      } else {
        ivalue3 = SvIV(tempsv);
      }
      arg3 = &ivalue3;
    }
    _saved[0] = ST(2);
    result = (int)ipmi_fru_t_area_get_used_length(arg1,arg2,arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setiv(tempsv, *arg3);
    }
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_fru_t_write) {
  {
    ipmi_fru_t *arg1 = 0 ;
    swig_cb *arg2 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 2)) {
      SWIG_croak("Usage: ipmi_fru_t_write(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_fru_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_fru_t_write" "', argument " "1"" of type '" "ipmi_fru_t *""'"); 
    }
    arg1 = (ipmi_fru_t *)(argp1);
    if (items > 1) {
      {
        if (!SvROK(ST(1)))
        croak("Argument 2 is not a reference.");
        arg2 = ST(1);
      }
    }
    result = (int)ipmi_fru_t_write(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_fru_t_multi_record_get_root_node) {
  {
    ipmi_fru_t *arg1 = 0 ;
    unsigned int arg2 ;
    char **arg3 = 0 ;
    ipmi_fru_node_t **arg4 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    char *svalue3 ;
    ipmi_fru_node_t *pvalue4 ;
    int argvi = 0;
    SV * _saved[2] ;
    int result;
    dXSARGS;
    
    if ((items < 4) || (items > 4)) {
      SWIG_croak("Usage: ipmi_fru_t_multi_record_get_root_node(self,record_num,name,sub_node);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_fru_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_fru_t_multi_record_get_root_node" "', argument " "1"" of type '" "ipmi_fru_t *""'"); 
    }
    arg1 = (ipmi_fru_t *)(argp1);
    ecode2 = SWIG_AsVal_unsigned_SS_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_fru_t_multi_record_get_root_node" "', argument " "2"" of type '" "unsigned int""'");
    } 
    arg2 = (unsigned int)(val2);
    {
      SV* tempsv;
      if (!SvROK(ST(2))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(2));
      if (!SvOK(tempsv)) {
        svalue3 = NULL;
      } else {
        svalue3 = SvPV_nolen(tempsv);
      }
      arg3 = &svalue3;
    }
    {
      if (!SvROK(ST(3))) {
        croak("expected a reference\n");
      }
      pvalue4 = NULL;
      arg4 = &pvalue4;
    }
    _saved[0] = ST(2);
    _saved[1] = ST(3);
    result = (int)ipmi_fru_t_multi_record_get_root_node(arg1,arg2,(char const **)arg3,arg4);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setpv(tempsv, *arg3);
    }
    {
      SV *tempsv;
      if (*arg4) {
        tempsv = SvRV(_saved[1]);
        SWIG_MakePtr(tempsv, *arg4, SWIGTYPE_p_ipmi_fru_node_t,
          SWIG_SHADOW|SWIG_OWNER);
      }
    }
    
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_fru_t_get_root_node) {
  {
    ipmi_fru_t *arg1 = 0 ;
    char **arg2 = 0 ;
    ipmi_fru_node_t **arg3 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    char *svalue2 ;
    ipmi_fru_node_t *pvalue3 ;
    int argvi = 0;
    SV * _saved[2] ;
    int result;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
      SWIG_croak("Usage: ipmi_fru_t_get_root_node(self,type,sub_node);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_fru_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_fru_t_get_root_node" "', argument " "1"" of type '" "ipmi_fru_t *""'"); 
    }
    arg1 = (ipmi_fru_t *)(argp1);
    {
      SV* tempsv;
      if (!SvROK(ST(1))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(1));
      if (!SvOK(tempsv)) {
        svalue2 = NULL;
      } else {
        svalue2 = SvPV_nolen(tempsv);
      }
      arg2 = &svalue2;
    }
    {
      if (!SvROK(ST(2))) {
        croak("expected a reference\n");
      }
      pvalue3 = NULL;
      arg3 = &pvalue3;
    }
    _saved[0] = ST(1);
    _saved[1] = ST(2);
    result = (int)ipmi_fru_t_get_root_node(arg1,(char const **)arg2,arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setpv(tempsv, *arg2);
    }
    {
      SV *tempsv;
      if (*arg3) {
        tempsv = SvRV(_saved[1]);
        SWIG_MakePtr(tempsv, *arg3, SWIGTYPE_p_ipmi_fru_node_t,
          SWIG_SHADOW|SWIG_OWNER);
      }
    }
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_delete_ipmi_fru_node_t) {
  {
    ipmi_fru_node_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: delete_ipmi_fru_node_t(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_fru_node_t, SWIG_POINTER_DISOWN |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_ipmi_fru_node_t" "', argument " "1"" of type '" "ipmi_fru_node_t *""'"); 
    }
    arg1 = (ipmi_fru_node_t *)(argp1);
    delete_ipmi_fru_node_t(arg1);
    ST(argvi) = &PL_sv_undef;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_fru_node_t_get_field) {
  {
    ipmi_fru_node_t *arg1 = 0 ;
    unsigned int arg2 ;
    char **arg3 = 0 ;
    char **arg4 = 0 ;
    char **arg5 = 0 ;
    ipmi_fru_node_t **arg6 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    char *svalue3 ;
    char *svalue4 ;
    char *svalue5 ;
    ipmi_fru_node_t *pvalue6 ;
    int argvi = 0;
    SV * _saved[4] ;
    int result;
    dXSARGS;
    
    if ((items < 6) || (items > 6)) {
      SWIG_croak("Usage: ipmi_fru_node_t_get_field(self,index,name,type,value,sub_node);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_fru_node_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_fru_node_t_get_field" "', argument " "1"" of type '" "ipmi_fru_node_t *""'"); 
    }
    arg1 = (ipmi_fru_node_t *)(argp1);
    ecode2 = SWIG_AsVal_unsigned_SS_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_fru_node_t_get_field" "', argument " "2"" of type '" "unsigned int""'");
    } 
    arg2 = (unsigned int)(val2);
    {
      SV* tempsv;
      if (!SvROK(ST(2))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(2));
      if (!SvOK(tempsv)) {
        svalue3 = NULL;
      } else {
        svalue3 = SvPV_nolen(tempsv);
      }
      arg3 = &svalue3;
    }
    {
      SV* tempsv;
      if (!SvROK(ST(3))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(3));
      if (!SvOK(tempsv)) {
        svalue4 = NULL;
      } else {
        svalue4 = SvPV_nolen(tempsv);
      }
      arg4 = &svalue4;
    }
    {
      if (!SvROK(ST(4))) {
        croak("expected a reference\n");
      }
      svalue5 = NULL;
      arg5 = &svalue5;
    }
    {
      if (!SvROK(ST(5))) {
        croak("expected a reference\n");
      }
      pvalue6 = NULL;
      arg6 = &pvalue6;
    }
    _saved[0] = ST(2);
    _saved[1] = ST(3);
    _saved[2] = ST(4);
    _saved[3] = ST(5);
    result = (int)ipmi_fru_node_t_get_field(arg1,arg2,(char const **)arg3,(char const **)arg4,arg5,arg6);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setpv(tempsv, *arg3);
    }
    {
      SV *tempsv;
      tempsv = SvRV(_saved[1]);
      sv_setpv(tempsv, *arg4);
    }
    {
      SV *tempsv;
      tempsv = SvRV(_saved[2]);
      sv_setpv(tempsv, *arg5);
      free(*arg5);
    }
    {
      SV *tempsv;
      if (*arg6) {
        tempsv = SvRV(_saved[3]);
        SWIG_MakePtr(tempsv, *arg6, SWIGTYPE_p_ipmi_fru_node_t,
          SWIG_SHADOW|SWIG_OWNER);
      }
    }
    
    
    
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_fru_node_t_get_enum_val) {
  {
    ipmi_fru_node_t *arg1 = 0 ;
    unsigned int arg2 ;
    int *arg3 = 0 ;
    int *arg4 = 0 ;
    char **arg5 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    int ivalue3 ;
    int ivalue4 ;
    char *svalue5 ;
    int argvi = 0;
    SV * _saved[3] ;
    int result;
    dXSARGS;
    
    if ((items < 5) || (items > 5)) {
      SWIG_croak("Usage: ipmi_fru_node_t_get_enum_val(self,index,pos,nextpos,data);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_fru_node_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_fru_node_t_get_enum_val" "', argument " "1"" of type '" "ipmi_fru_node_t *""'"); 
    }
    arg1 = (ipmi_fru_node_t *)(argp1);
    ecode2 = SWIG_AsVal_unsigned_SS_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_fru_node_t_get_enum_val" "', argument " "2"" of type '" "unsigned int""'");
    } 
    arg2 = (unsigned int)(val2);
    {
      SV* tempsv;
      if (!SvROK(ST(2))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(2));
      if (!SvIOK(tempsv)) {
        ivalue3 = 0;
      } else {
        ivalue3 = SvIV(tempsv);
      }
      arg3 = &ivalue3;
    }
    {
      SV* tempsv;
      if (!SvROK(ST(3))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(3));
      if (!SvIOK(tempsv)) {
        ivalue4 = 0;
      } else {
        ivalue4 = SvIV(tempsv);
      }
      arg4 = &ivalue4;
    }
    {
      SV* tempsv;
      if (!SvROK(ST(4))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(4));
      if (!SvOK(tempsv)) {
        svalue5 = NULL;
      } else {
        svalue5 = SvPV_nolen(tempsv);
      }
      arg5 = &svalue5;
    }
    _saved[0] = ST(2);
    _saved[1] = ST(3);
    _saved[2] = ST(4);
    result = (int)ipmi_fru_node_t_get_enum_val(arg1,arg2,arg3,arg4,(char const **)arg5);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setiv(tempsv, *arg3);
    }
    {
      SV *tempsv;
      tempsv = SvRV(_saved[1]);
      sv_setiv(tempsv, *arg4);
    }
    {
      SV *tempsv;
      tempsv = SvRV(_saved[2]);
      sv_setpv(tempsv, *arg5);
    }
    
    
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_fru_node_t_set_field) {
  {
    ipmi_fru_node_t *arg1 = 0 ;
    unsigned int arg2 ;
    char *arg3 = 0 ;
    char *arg4 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    int res3 ;
    char *buf3 = 0 ;
    int alloc3 = 0 ;
    int res4 ;
    char *buf4 = 0 ;
    int alloc4 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 4) || (items > 4)) {
      SWIG_croak("Usage: ipmi_fru_node_t_set_field(self,index,type,value);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_fru_node_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_fru_node_t_set_field" "', argument " "1"" of type '" "ipmi_fru_node_t *""'"); 
    }
    arg1 = (ipmi_fru_node_t *)(argp1);
    ecode2 = SWIG_AsVal_unsigned_SS_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_fru_node_t_set_field" "', argument " "2"" of type '" "unsigned int""'");
    } 
    arg2 = (unsigned int)(val2);
    res3 = SWIG_AsCharPtrAndSize(ST(2), &buf3, NULL, &alloc3);
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "ipmi_fru_node_t_set_field" "', argument " "3"" of type '" "char const *""'");
    }
    arg3 = (char *)(buf3);
    res4 = SWIG_AsCharPtrAndSize(ST(3), &buf4, NULL, &alloc4);
    if (!SWIG_IsOK(res4)) {
      SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "ipmi_fru_node_t_set_field" "', argument " "4"" of type '" "char *""'");
    }
    arg4 = (char *)(buf4);
    result = (int)ipmi_fru_node_t_set_field(arg1,arg2,(char const *)arg3,arg4);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    if (alloc3 == SWIG_NEWOBJ) free((char*)buf3);
    if (alloc4 == SWIG_NEWOBJ) free((char*)buf4);
    XSRETURN(argvi);
    fail:;
    
    
    if (alloc3 == SWIG_NEWOBJ) free((char*)buf3);
    if (alloc4 == SWIG_NEWOBJ) free((char*)buf4);
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_fru_node_t_settable) {
  {
    ipmi_fru_node_t *arg1 = 0 ;
    unsigned int arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_fru_node_t_settable(self,index);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_fru_node_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_fru_node_t_settable" "', argument " "1"" of type '" "ipmi_fru_node_t *""'"); 
    }
    arg1 = (ipmi_fru_node_t *)(argp1);
    ecode2 = SWIG_AsVal_unsigned_SS_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_fru_node_t_settable" "', argument " "2"" of type '" "unsigned int""'");
    } 
    arg2 = (unsigned int)(val2);
    result = (int)ipmi_fru_node_t_settable(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_fru_node_t_get_subtype) {
  {
    ipmi_fru_node_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_fru_node_t_get_subtype(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_fru_node_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_fru_node_t_get_subtype" "', argument " "1"" of type '" "ipmi_fru_node_t *""'"); 
    }
    arg1 = (ipmi_fru_node_t *)(argp1);
    result = (char *)ipmi_fru_node_t_get_subtype(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_get_domain) {
  {
    ipmi_mc_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    ipmi_domain_t *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_mc_t_get_domain(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_get_domain" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    result = (ipmi_domain_t *)ipmi_mc_t_get_domain(arg1);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ipmi_domain_t, 0 | SWIG_SHADOW); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_get_name) {
  {
    ipmi_mc_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_mc_t_get_name(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_get_name" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    result = (char *)ipmi_mc_t_get_name(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    free((char*)result);
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_get_id) {
  {
    ipmi_mc_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    ipmi_mcid_t *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_mc_t_get_id(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_get_id" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    result = (ipmi_mcid_t *)ipmi_mc_t_get_id(arg1);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ipmi_mcid_t, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_get_guid) {
  {
    ipmi_mc_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_mc_t_get_guid(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_get_guid" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    result = (char *)ipmi_mc_t_get_guid(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    free((char*)result);
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_provides_device_sdrs) {
  {
    ipmi_mc_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_mc_t_provides_device_sdrs(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_provides_device_sdrs" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    result = (int)ipmi_mc_t_provides_device_sdrs(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_device_available) {
  {
    ipmi_mc_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_mc_t_device_available(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_device_available" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    result = (int)ipmi_mc_t_device_available(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_chassis_support) {
  {
    ipmi_mc_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_mc_t_chassis_support(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_chassis_support" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    result = (int)ipmi_mc_t_chassis_support(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_bridge_support) {
  {
    ipmi_mc_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_mc_t_bridge_support(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_bridge_support" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    result = (int)ipmi_mc_t_bridge_support(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_ipmb_event_generator_support) {
  {
    ipmi_mc_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_mc_t_ipmb_event_generator_support(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_ipmb_event_generator_support" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    result = (int)ipmi_mc_t_ipmb_event_generator_support(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_ipmb_event_receiver_support) {
  {
    ipmi_mc_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_mc_t_ipmb_event_receiver_support(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_ipmb_event_receiver_support" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    result = (int)ipmi_mc_t_ipmb_event_receiver_support(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_fru_inventory_support) {
  {
    ipmi_mc_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_mc_t_fru_inventory_support(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_fru_inventory_support" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    result = (int)ipmi_mc_t_fru_inventory_support(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_sel_device_support) {
  {
    ipmi_mc_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_mc_t_sel_device_support(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_sel_device_support" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    result = (int)ipmi_mc_t_sel_device_support(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_sdr_repository_support) {
  {
    ipmi_mc_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_mc_t_sdr_repository_support(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_sdr_repository_support" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    result = (int)ipmi_mc_t_sdr_repository_support(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_sensor_device_support) {
  {
    ipmi_mc_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_mc_t_sensor_device_support(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_sensor_device_support" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    result = (int)ipmi_mc_t_sensor_device_support(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_device_id) {
  {
    ipmi_mc_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_mc_t_device_id(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_device_id" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    result = (int)ipmi_mc_t_device_id(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_device_revision) {
  {
    ipmi_mc_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_mc_t_device_revision(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_device_revision" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    result = (int)ipmi_mc_t_device_revision(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_major_fw_revision) {
  {
    ipmi_mc_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_mc_t_major_fw_revision(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_major_fw_revision" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    result = (int)ipmi_mc_t_major_fw_revision(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_minor_fw_revision) {
  {
    ipmi_mc_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_mc_t_minor_fw_revision(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_minor_fw_revision" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    result = (int)ipmi_mc_t_minor_fw_revision(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_major_version) {
  {
    ipmi_mc_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_mc_t_major_version(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_major_version" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    result = (int)ipmi_mc_t_major_version(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_minor_version) {
  {
    ipmi_mc_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_mc_t_minor_version(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_minor_version" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    result = (int)ipmi_mc_t_minor_version(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_manufacturer_id) {
  {
    ipmi_mc_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_mc_t_manufacturer_id(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_manufacturer_id" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    result = (int)ipmi_mc_t_manufacturer_id(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_product_id) {
  {
    ipmi_mc_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_mc_t_product_id(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_product_id" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    result = (int)ipmi_mc_t_product_id(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_aux_fw_revision) {
  {
    ipmi_mc_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_mc_t_aux_fw_revision(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_aux_fw_revision" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    result = (char *)ipmi_mc_t_aux_fw_revision(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    free((char*)result);
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_is_active) {
  {
    ipmi_mc_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_mc_t_is_active(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_is_active" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    result = (int)ipmi_mc_t_is_active(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_add_active_handler) {
  {
    ipmi_mc_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_mc_t_add_active_handler(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_add_active_handler" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_mc_t_add_active_handler(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_remove_active_handler) {
  {
    ipmi_mc_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_mc_t_remove_active_handler(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_remove_active_handler" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_mc_t_remove_active_handler(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_add_fully_up_handler) {
  {
    ipmi_mc_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_mc_t_add_fully_up_handler(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_add_fully_up_handler" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_mc_t_add_fully_up_handler(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_remove_fully_up_handler) {
  {
    ipmi_mc_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_mc_t_remove_fully_up_handler(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_remove_fully_up_handler" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_mc_t_remove_fully_up_handler(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_send_command) {
  {
    ipmi_mc_t *arg1 = 0 ;
    int arg2 ;
    int arg3 ;
    int arg4 ;
    intarray arg5 ;
    swig_cb *arg6 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    int val4 ;
    int ecode4 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    {
      (&arg5)->val = NULL;
    }
    if ((items < 5) || (items > 6)) {
      SWIG_croak("Usage: ipmi_mc_t_send_command(self,lun,netfn,cmd,msg_data,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_send_command" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_mc_t_send_command" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    ecode3 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(2), &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ipmi_mc_t_send_command" "', argument " "3"" of type '" "int""'");
    } 
    arg3 = (int)(val3);
    ecode4 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(3), &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "ipmi_mc_t_send_command" "', argument " "4"" of type '" "int""'");
    } 
    arg4 = (int)(val4);
    {
      AV *tempav;
      I32 len;
      int i;
      SV  **tv;
      if (!SvROK(ST(4)))
      croak("Argument 5 is not a reference.");
      if (SvTYPE(SvRV(ST(4))) != SVt_PVAV)
      croak("Argument 5 is not an array.");
      tempav = (AV*)SvRV(ST(4));
      len = av_len(tempav);
      (&arg5)->val = (int *) malloc((len+2)*sizeof(int));
      (&arg5)->len = len + 1;
      
      for (i = 0; i <= len; i++) {
        tv = av_fetch(tempav, i, 0);
        (&arg5)->val[i] = SvIV(*tv);
      }
    }
    if (items > 5) {
      {
        if (!SvROK(ST(5)))
        croak("Argument 6 is not a reference.");
        arg6 = ST(5);
      }
    }
    result = (int)ipmi_mc_t_send_command(arg1,arg2,arg3,arg4,arg5,arg6);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    
    
    {
      if ((&arg5)->val)
      free((&arg5)->val);
    }
    
    XSRETURN(argvi);
    fail:;
    
    
    
    
    {
      if ((&arg5)->val)
      free((&arg5)->val);
    }
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_reset) {
  {
    ipmi_mc_t *arg1 = 0 ;
    int arg2 ;
    swig_cb *arg3 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 3)) {
      SWIG_croak("Usage: ipmi_mc_t_reset(self,reset_type,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_reset" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_mc_t_reset" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    if (items > 2) {
      {
        if (!SvROK(ST(2)))
        croak("Argument 3 is not a reference.");
        arg3 = ST(2);
      }
    }
    result = (int)ipmi_mc_t_reset(arg1,arg2,arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_get_events_enable) {
  {
    ipmi_mc_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_mc_t_get_events_enable(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_get_events_enable" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    result = (int)ipmi_mc_t_get_events_enable(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_set_events_enable) {
  {
    ipmi_mc_t *arg1 = 0 ;
    int arg2 ;
    swig_cb *arg3 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 3)) {
      SWIG_croak("Usage: ipmi_mc_t_set_events_enable(self,val,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_set_events_enable" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_mc_t_set_events_enable" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    if (items > 2) {
      {
        if (!SvROK(ST(2)))
        croak("Argument 3 is not a reference.");
        arg3 = ST(2);
      }
    }
    result = (int)ipmi_mc_t_set_events_enable(arg1,arg2,arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_get_event_log_enable) {
  {
    ipmi_mc_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_mc_t_get_event_log_enable(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_get_event_log_enable" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_mc_t_get_event_log_enable(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_set_event_log_enable) {
  {
    ipmi_mc_t *arg1 = 0 ;
    int arg2 ;
    swig_cb *arg3 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 3)) {
      SWIG_croak("Usage: ipmi_mc_t_set_event_log_enable(self,val,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_set_event_log_enable" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_mc_t_set_event_log_enable" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    if (items > 2) {
      {
        if (!SvROK(ST(2)))
        croak("Argument 3 is not a reference.");
        arg3 = ST(2);
      }
    }
    result = (int)ipmi_mc_t_set_event_log_enable(arg1,arg2,arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_reread_sensors) {
  {
    ipmi_mc_t *arg1 = 0 ;
    swig_cb *arg2 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 2)) {
      SWIG_croak("Usage: ipmi_mc_t_reread_sensors(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_reread_sensors" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    if (items > 1) {
      {
        if (!SvROK(ST(1)))
        croak("Argument 2 is not a reference.");
        arg2 = ST(1);
      }
    }
    result = (int)ipmi_mc_t_reread_sensors(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_set_sel_rescan_time) {
  {
    ipmi_mc_t *arg1 = 0 ;
    unsigned int arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_mc_t_set_sel_rescan_time(self,seconds);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_set_sel_rescan_time" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    ecode2 = SWIG_AsVal_unsigned_SS_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_mc_t_set_sel_rescan_time" "', argument " "2"" of type '" "unsigned int""'");
    } 
    arg2 = (unsigned int)(val2);
    ipmi_mc_t_set_sel_rescan_time(arg1,arg2);
    ST(argvi) = &PL_sv_undef;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_get_sel_rescan_time) {
  {
    ipmi_mc_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_mc_t_get_sel_rescan_time(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_get_sel_rescan_time" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    result = (int)ipmi_mc_t_get_sel_rescan_time(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_reread_sel) {
  {
    ipmi_mc_t *arg1 = 0 ;
    swig_cb *arg2 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 2)) {
      SWIG_croak("Usage: ipmi_mc_t_reread_sel(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_reread_sel" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    if (items > 1) {
      {
        if (!SvROK(ST(1)))
        croak("Argument 2 is not a reference.");
        arg2 = ST(1);
      }
    }
    result = (int)ipmi_mc_t_reread_sel(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_get_current_sel_time) {
  {
    ipmi_mc_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_mc_t_get_current_sel_time(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_get_current_sel_time" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_mc_t_get_current_sel_time(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_first_event) {
  {
    ipmi_mc_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    ipmi_event_t *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_mc_t_first_event(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_first_event" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    result = (ipmi_event_t *)ipmi_mc_t_first_event(arg1);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ipmi_event_t, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_last_event) {
  {
    ipmi_mc_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    ipmi_event_t *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_mc_t_last_event(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_last_event" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    result = (ipmi_event_t *)ipmi_mc_t_last_event(arg1);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ipmi_event_t, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_next_event) {
  {
    ipmi_mc_t *arg1 = 0 ;
    ipmi_event_t *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    int argvi = 0;
    ipmi_event_t *result = 0 ;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_mc_t_next_event(self,event);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_next_event" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    res2 = SWIG_ConvertPtr(ST(1), &argp2,SWIGTYPE_p_ipmi_event_t, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ipmi_mc_t_next_event" "', argument " "2"" of type '" "ipmi_event_t *""'"); 
    }
    arg2 = (ipmi_event_t *)(argp2);
    result = (ipmi_event_t *)ipmi_mc_t_next_event(arg1,arg2);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ipmi_event_t, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_prev_event) {
  {
    ipmi_mc_t *arg1 = 0 ;
    ipmi_event_t *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    int argvi = 0;
    ipmi_event_t *result = 0 ;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_mc_t_prev_event(self,event);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_prev_event" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    res2 = SWIG_ConvertPtr(ST(1), &argp2,SWIGTYPE_p_ipmi_event_t, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ipmi_mc_t_prev_event" "', argument " "2"" of type '" "ipmi_event_t *""'"); 
    }
    arg2 = (ipmi_event_t *)(argp2);
    result = (ipmi_event_t *)ipmi_mc_t_prev_event(arg1,arg2);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ipmi_event_t, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_event_by_recid) {
  {
    ipmi_mc_t *arg1 = 0 ;
    int arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    ipmi_event_t *result = 0 ;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_mc_t_event_by_recid(self,record_id);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_event_by_recid" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_mc_t_event_by_recid" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    result = (ipmi_event_t *)ipmi_mc_t_event_by_recid(arg1,arg2);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ipmi_event_t, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_sel_count) {
  {
    ipmi_mc_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_mc_t_sel_count(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_sel_count" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    result = (int)ipmi_mc_t_sel_count(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_sel_entries_used) {
  {
    ipmi_mc_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_mc_t_sel_entries_used(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_sel_entries_used" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    result = (int)ipmi_mc_t_sel_entries_used(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_sel_get_major_version) {
  {
    ipmi_mc_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_mc_t_sel_get_major_version(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_sel_get_major_version" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    result = (int)ipmi_mc_t_sel_get_major_version(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_sel_get_minor_version) {
  {
    ipmi_mc_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_mc_t_sel_get_minor_version(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_sel_get_minor_version" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    result = (int)ipmi_mc_t_sel_get_minor_version(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_sel_get_num_entries) {
  {
    ipmi_mc_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_mc_t_sel_get_num_entries(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_sel_get_num_entries" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    result = (int)ipmi_mc_t_sel_get_num_entries(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_sel_get_free_bytes) {
  {
    ipmi_mc_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_mc_t_sel_get_free_bytes(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_sel_get_free_bytes" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    result = (int)ipmi_mc_t_sel_get_free_bytes(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_sel_get_overflow) {
  {
    ipmi_mc_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_mc_t_sel_get_overflow(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_sel_get_overflow" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    result = (int)ipmi_mc_t_sel_get_overflow(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_sel_get_supports_delete_sel) {
  {
    ipmi_mc_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_mc_t_sel_get_supports_delete_sel(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_sel_get_supports_delete_sel" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    result = (int)ipmi_mc_t_sel_get_supports_delete_sel(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_sel_get_supports_partial_add_sel) {
  {
    ipmi_mc_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_mc_t_sel_get_supports_partial_add_sel(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_sel_get_supports_partial_add_sel" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    result = (int)ipmi_mc_t_sel_get_supports_partial_add_sel(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_sel_get_supports_reserve_sel) {
  {
    ipmi_mc_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_mc_t_sel_get_supports_reserve_sel(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_sel_get_supports_reserve_sel" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    result = (int)ipmi_mc_t_sel_get_supports_reserve_sel(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_sel_get_supports_get_sel_allocation) {
  {
    ipmi_mc_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_mc_t_sel_get_supports_get_sel_allocation(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_sel_get_supports_get_sel_allocation" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    result = (int)ipmi_mc_t_sel_get_supports_get_sel_allocation(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_sel_get_last_addition_timestamp) {
  {
    ipmi_mc_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_mc_t_sel_get_last_addition_timestamp(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_sel_get_last_addition_timestamp" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    result = (int)ipmi_mc_t_sel_get_last_addition_timestamp(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_channel_get_info) {
  {
    ipmi_mc_t *arg1 = 0 ;
    int arg2 ;
    swig_cb *arg3 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
      SWIG_croak("Usage: ipmi_mc_t_channel_get_info(self,channel,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_channel_get_info" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_mc_t_channel_get_info" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    {
      if (!SvROK(ST(2)))
      croak("Argument 3 is not a reference.");
      arg3 = ST(2);
    }
    result = (int)ipmi_mc_t_channel_get_info(arg1,arg2,arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_channel_get_access) {
  {
    ipmi_mc_t *arg1 = 0 ;
    int arg2 ;
    char *arg3 = 0 ;
    swig_cb *arg4 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int res3 ;
    char *buf3 = 0 ;
    int alloc3 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 4) || (items > 4)) {
      SWIG_croak("Usage: ipmi_mc_t_channel_get_access(self,channel,type,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_channel_get_access" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_mc_t_channel_get_access" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    res3 = SWIG_AsCharPtrAndSize(ST(2), &buf3, NULL, &alloc3);
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "ipmi_mc_t_channel_get_access" "', argument " "3"" of type '" "char *""'");
    }
    arg3 = (char *)(buf3);
    {
      if (!SvROK(ST(3)))
      croak("Argument 4 is not a reference.");
      arg4 = ST(3);
    }
    result = (int)ipmi_mc_t_channel_get_access(arg1,arg2,arg3,arg4);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    if (alloc3 == SWIG_NEWOBJ) free((char*)buf3);
    
    XSRETURN(argvi);
    fail:;
    
    
    if (alloc3 == SWIG_NEWOBJ) free((char*)buf3);
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_channel_set_access) {
  {
    ipmi_mc_t *arg1 = 0 ;
    ipmi_channel_access_t *arg2 = 0 ;
    int arg3 ;
    char *arg4 = 0 ;
    swig_cb *arg5 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    int res4 ;
    char *buf4 = 0 ;
    int alloc4 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 4) || (items > 5)) {
      SWIG_croak("Usage: ipmi_mc_t_channel_set_access(self,access,channel,type,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_channel_set_access" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    res2 = SWIG_ConvertPtr(ST(1), &argp2,SWIGTYPE_p_ipmi_channel_access_t, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ipmi_mc_t_channel_set_access" "', argument " "2"" of type '" "ipmi_channel_access_t *""'"); 
    }
    arg2 = (ipmi_channel_access_t *)(argp2);
    ecode3 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(2), &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ipmi_mc_t_channel_set_access" "', argument " "3"" of type '" "int""'");
    } 
    arg3 = (int)(val3);
    res4 = SWIG_AsCharPtrAndSize(ST(3), &buf4, NULL, &alloc4);
    if (!SWIG_IsOK(res4)) {
      SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "ipmi_mc_t_channel_set_access" "', argument " "4"" of type '" "char *""'");
    }
    arg4 = (char *)(buf4);
    if (items > 4) {
      {
        if (!SvROK(ST(4)))
        croak("Argument 5 is not a reference.");
        arg5 = ST(4);
      }
    }
    result = (int)ipmi_mc_t_channel_set_access(arg1,arg2,arg3,arg4,arg5);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    
    if (alloc4 == SWIG_NEWOBJ) free((char*)buf4);
    
    XSRETURN(argvi);
    fail:;
    
    
    
    if (alloc4 == SWIG_NEWOBJ) free((char*)buf4);
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_get_users) {
  {
    ipmi_mc_t *arg1 = 0 ;
    int arg2 ;
    int arg3 ;
    swig_cb *arg4 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 4) || (items > 4)) {
      SWIG_croak("Usage: ipmi_mc_t_get_users(self,channel,user,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_get_users" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_mc_t_get_users" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    ecode3 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(2), &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ipmi_mc_t_get_users" "', argument " "3"" of type '" "int""'");
    } 
    arg3 = (int)(val3);
    {
      if (!SvROK(ST(3)))
      croak("Argument 4 is not a reference.");
      arg4 = ST(3);
    }
    result = (int)ipmi_mc_t_get_users(arg1,arg2,arg3,arg4);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_set_user) {
  {
    ipmi_mc_t *arg1 = 0 ;
    ipmi_user_t *arg2 = 0 ;
    int arg3 ;
    int arg4 ;
    swig_cb *arg5 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    int val4 ;
    int ecode4 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 4) || (items > 5)) {
      SWIG_croak("Usage: ipmi_mc_t_set_user(self,userinfo,channel,usernum,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_set_user" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    res2 = SWIG_ConvertPtr(ST(1), &argp2,SWIGTYPE_p_ipmi_user_t, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ipmi_mc_t_set_user" "', argument " "2"" of type '" "ipmi_user_t *""'"); 
    }
    arg2 = (ipmi_user_t *)(argp2);
    ecode3 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(2), &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ipmi_mc_t_set_user" "', argument " "3"" of type '" "int""'");
    } 
    arg3 = (int)(val3);
    ecode4 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(3), &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "ipmi_mc_t_set_user" "', argument " "4"" of type '" "int""'");
    } 
    arg4 = (int)(val4);
    if (items > 4) {
      {
        if (!SvROK(ST(4)))
        croak("Argument 5 is not a reference.");
        arg5 = ST(4);
      }
    }
    result = (int)ipmi_mc_t_set_user(arg1,arg2,arg3,arg4,arg5);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_get_lanparm) {
  {
    ipmi_mc_t *arg1 = 0 ;
    int arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    ipmi_lanparm_t *result = 0 ;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_mc_t_get_lanparm(self,channel);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_get_lanparm" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_mc_t_get_lanparm" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    result = (ipmi_lanparm_t *)ipmi_mc_t_get_lanparm(arg1,arg2);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ipmi_lanparm_t, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_get_pef) {
  {
    ipmi_mc_t *arg1 = 0 ;
    swig_cb *arg2 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    ipmi_pef_t *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 2)) {
      SWIG_croak("Usage: ipmi_mc_t_get_pef(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_get_pef" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    if (items > 1) {
      {
        if (!SvROK(ST(1)))
        croak("Argument 2 is not a reference.");
        arg2 = ST(1);
      }
    }
    result = (ipmi_pef_t *)ipmi_mc_t_get_pef(arg1,arg2);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ipmi_pef_t, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_get_pet) {
  {
    ipmi_mc_t *arg1 = 0 ;
    int arg2 ;
    char *arg3 = 0 ;
    char *arg4 = 0 ;
    int arg5 ;
    int arg6 ;
    int arg7 ;
    int arg8 ;
    swig_cb *arg9 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int res3 ;
    char *buf3 = 0 ;
    int alloc3 = 0 ;
    int res4 ;
    char *buf4 = 0 ;
    int alloc4 = 0 ;
    int val5 ;
    int ecode5 = 0 ;
    int val6 ;
    int ecode6 = 0 ;
    int val7 ;
    int ecode7 = 0 ;
    int val8 ;
    int ecode8 = 0 ;
    int argvi = 0;
    ipmi_pet_t *result = 0 ;
    dXSARGS;
    
    if ((items < 8) || (items > 9)) {
      SWIG_croak("Usage: ipmi_mc_t_get_pet(self,channel,ip_addr,mac_addr,eft_sel,policy_num,apt_sel,lan_dest_sel,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_get_pet" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_mc_t_get_pet" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    res3 = SWIG_AsCharPtrAndSize(ST(2), &buf3, NULL, &alloc3);
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "ipmi_mc_t_get_pet" "', argument " "3"" of type '" "char *""'");
    }
    arg3 = (char *)(buf3);
    res4 = SWIG_AsCharPtrAndSize(ST(3), &buf4, NULL, &alloc4);
    if (!SWIG_IsOK(res4)) {
      SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "ipmi_mc_t_get_pet" "', argument " "4"" of type '" "char *""'");
    }
    arg4 = (char *)(buf4);
    ecode5 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(4), &val5);
    if (!SWIG_IsOK(ecode5)) {
      SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "ipmi_mc_t_get_pet" "', argument " "5"" of type '" "int""'");
    } 
    arg5 = (int)(val5);
    ecode6 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(5), &val6);
    if (!SWIG_IsOK(ecode6)) {
      SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "ipmi_mc_t_get_pet" "', argument " "6"" of type '" "int""'");
    } 
    arg6 = (int)(val6);
    ecode7 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(6), &val7);
    if (!SWIG_IsOK(ecode7)) {
      SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "ipmi_mc_t_get_pet" "', argument " "7"" of type '" "int""'");
    } 
    arg7 = (int)(val7);
    ecode8 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(7), &val8);
    if (!SWIG_IsOK(ecode8)) {
      SWIG_exception_fail(SWIG_ArgError(ecode8), "in method '" "ipmi_mc_t_get_pet" "', argument " "8"" of type '" "int""'");
    } 
    arg8 = (int)(val8);
    if (items > 8) {
      {
        if (!SvROK(ST(8)))
        croak("Argument 9 is not a reference.");
        arg9 = ST(8);
      }
    }
    result = (ipmi_pet_t *)ipmi_mc_t_get_pet(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ipmi_pet_t, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
    
    
    if (alloc3 == SWIG_NEWOBJ) free((char*)buf3);
    if (alloc4 == SWIG_NEWOBJ) free((char*)buf4);
    
    
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    if (alloc3 == SWIG_NEWOBJ) free((char*)buf3);
    if (alloc4 == SWIG_NEWOBJ) free((char*)buf4);
    
    
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mc_t_get_solparm) {
  {
    ipmi_mc_t *arg1 = 0 ;
    int arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    ipmi_solparm_t *result = 0 ;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_mc_t_get_solparm(self,channel);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mc_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mc_t_get_solparm" "', argument " "1"" of type '" "ipmi_mc_t *""'"); 
    }
    arg1 = (ipmi_mc_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_mc_t_get_solparm" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    result = (ipmi_solparm_t *)ipmi_mc_t_get_solparm(arg1,arg2);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ipmi_solparm_t, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_delete_ipmi_mcid_t) {
  {
    ipmi_mcid_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: delete_ipmi_mcid_t(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mcid_t, SWIG_POINTER_DISOWN |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_ipmi_mcid_t" "', argument " "1"" of type '" "ipmi_mcid_t *""'"); 
    }
    arg1 = (ipmi_mcid_t *)(argp1);
    delete_ipmi_mcid_t(arg1);
    ST(argvi) = &PL_sv_undef;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mcid_t_cmp) {
  {
    ipmi_mcid_t *arg1 = 0 ;
    ipmi_mcid_t *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_mcid_t_cmp(self,other);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mcid_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mcid_t_cmp" "', argument " "1"" of type '" "ipmi_mcid_t *""'"); 
    }
    arg1 = (ipmi_mcid_t *)(argp1);
    res2 = SWIG_ConvertPtr(ST(1), &argp2,SWIGTYPE_p_ipmi_mcid_t, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ipmi_mcid_t_cmp" "', argument " "2"" of type '" "ipmi_mcid_t *""'"); 
    }
    arg2 = (ipmi_mcid_t *)(argp2);
    result = (int)ipmi_mcid_t_cmp(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_mcid_t_to_mc) {
  {
    ipmi_mcid_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_mcid_t_to_mc(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_mcid_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_mcid_t_to_mc" "', argument " "1"" of type '" "ipmi_mcid_t *""'"); 
    }
    arg1 = (ipmi_mcid_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_mcid_t_to_mc(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_delete_ipmi_event_t) {
  {
    ipmi_event_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: delete_ipmi_event_t(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_event_t, SWIG_POINTER_DISOWN |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_ipmi_event_t" "', argument " "1"" of type '" "ipmi_event_t *""'"); 
    }
    arg1 = (ipmi_event_t *)(argp1);
    delete_ipmi_event_t(arg1);
    ST(argvi) = &PL_sv_undef;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_event_t_delete) {
  {
    ipmi_event_t *arg1 = 0 ;
    swig_cb *arg2 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 2)) {
      SWIG_croak("Usage: ipmi_event_t_delete(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_event_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_event_t_delete" "', argument " "1"" of type '" "ipmi_event_t *""'"); 
    }
    arg1 = (ipmi_event_t *)(argp1);
    if (items > 1) {
      {
        if (!SvROK(ST(1)))
        croak("Argument 2 is not a reference.");
        arg2 = ST(1);
      }
    }
    result = (int)ipmi_event_t_delete(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_event_t_get_mc_id) {
  {
    ipmi_event_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    ipmi_mcid_t *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_event_t_get_mc_id(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_event_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_event_t_get_mc_id" "', argument " "1"" of type '" "ipmi_event_t *""'"); 
    }
    arg1 = (ipmi_event_t *)(argp1);
    result = (ipmi_mcid_t *)ipmi_event_t_get_mc_id(arg1);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ipmi_mcid_t, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_event_t_get_record_id) {
  {
    ipmi_event_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_event_t_get_record_id(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_event_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_event_t_get_record_id" "', argument " "1"" of type '" "ipmi_event_t *""'"); 
    }
    arg1 = (ipmi_event_t *)(argp1);
    result = (int)ipmi_event_t_get_record_id(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_event_t_get_type) {
  {
    ipmi_event_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_event_t_get_type(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_event_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_event_t_get_type" "', argument " "1"" of type '" "ipmi_event_t *""'"); 
    }
    arg1 = (ipmi_event_t *)(argp1);
    result = (int)ipmi_event_t_get_type(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_event_t_get_timestamp) {
  {
    ipmi_event_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    double result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_event_t_get_timestamp(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_event_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_event_t_get_timestamp" "', argument " "1"" of type '" "ipmi_event_t *""'"); 
    }
    arg1 = (ipmi_event_t *)(argp1);
    result = (double)ipmi_event_t_get_timestamp(arg1);
    ST(argvi) = SWIG_From_double  SWIG_PERL_CALL_ARGS_1((double)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_event_t_get_data) {
  {
    ipmi_event_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    intarray result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_event_t_get_data(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_event_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_event_t_get_data" "', argument " "1"" of type '" "ipmi_event_t *""'"); 
    }
    arg1 = (ipmi_event_t *)(argp1);
    result = ipmi_event_t_get_data(arg1);
    {
      AV *tempav;
      SV **svs;
      int i;
      
      svs = (SV **) malloc((&result)->len*sizeof(SV *));
      for (i=0; i<(&result)->len; i++) {
        svs[i] = sv_newmortal();
        sv_setiv(svs[i], (&result)->val[i]);
      }
      tempav = av_make((&result)->len, svs);
      free(svs);
      ST(argvi) = newRV((SV *) tempav);
      sv_2mortal(ST(argvi));
      argvi++;
    }
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_event_t_call_handler) {
  {
    ipmi_event_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_event_t_call_handler(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_event_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_event_t_call_handler" "', argument " "1"" of type '" "ipmi_event_t *""'"); 
    }
    arg1 = (ipmi_event_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_event_t_call_handler(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_name) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_name(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_name" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    result = (char *)ipmi_sensor_t_get_name(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    free((char*)result);
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_id) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    ipmi_sensor_id_t *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_id(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_id" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    result = (ipmi_sensor_id_t *)ipmi_sensor_t_get_id(arg1);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ipmi_sensor_id_t, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_add_event_handler) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_sensor_t_add_event_handler(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_add_event_handler" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_sensor_t_add_event_handler(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_remove_event_handler) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_sensor_t_remove_event_handler(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_remove_event_handler" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_sensor_t_remove_event_handler(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_set_event_enables) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    char *arg2 = 0 ;
    swig_cb *arg3 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 ;
    char *buf2 = 0 ;
    int alloc2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 3)) {
      SWIG_croak("Usage: ipmi_sensor_t_set_event_enables(self,states,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_set_event_enables" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2);
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ipmi_sensor_t_set_event_enables" "', argument " "2"" of type '" "char *""'");
    }
    arg2 = (char *)(buf2);
    if (items > 2) {
      {
        if (!SvROK(ST(2)))
        croak("Argument 3 is not a reference.");
        arg3 = ST(2);
      }
    }
    result = (int)ipmi_sensor_t_set_event_enables(arg1,arg2,arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
    
    XSRETURN(argvi);
    fail:;
    
    if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_enable_events) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    char *arg2 = 0 ;
    swig_cb *arg3 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 ;
    char *buf2 = 0 ;
    int alloc2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 3)) {
      SWIG_croak("Usage: ipmi_sensor_t_enable_events(self,states,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_enable_events" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2);
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ipmi_sensor_t_enable_events" "', argument " "2"" of type '" "char *""'");
    }
    arg2 = (char *)(buf2);
    if (items > 2) {
      {
        if (!SvROK(ST(2)))
        croak("Argument 3 is not a reference.");
        arg3 = ST(2);
      }
    }
    result = (int)ipmi_sensor_t_enable_events(arg1,arg2,arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
    
    XSRETURN(argvi);
    fail:;
    
    if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_disable_events) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    char *arg2 = 0 ;
    swig_cb *arg3 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 ;
    char *buf2 = 0 ;
    int alloc2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 3)) {
      SWIG_croak("Usage: ipmi_sensor_t_disable_events(self,states,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_disable_events" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2);
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ipmi_sensor_t_disable_events" "', argument " "2"" of type '" "char *""'");
    }
    arg2 = (char *)(buf2);
    if (items > 2) {
      {
        if (!SvROK(ST(2)))
        croak("Argument 3 is not a reference.");
        arg3 = ST(2);
      }
    }
    result = (int)ipmi_sensor_t_disable_events(arg1,arg2,arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
    
    XSRETURN(argvi);
    fail:;
    
    if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_event_enables) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_event_enables(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_event_enables" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_sensor_t_get_event_enables(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_rearm) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    int arg2 ;
    char *arg3 = 0 ;
    swig_cb *arg4 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int res3 ;
    char *buf3 = 0 ;
    int alloc3 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 3) || (items > 4)) {
      SWIG_croak("Usage: ipmi_sensor_t_rearm(self,global_enable,states,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_rearm" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_sensor_t_rearm" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    res3 = SWIG_AsCharPtrAndSize(ST(2), &buf3, NULL, &alloc3);
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "ipmi_sensor_t_rearm" "', argument " "3"" of type '" "char *""'");
    }
    arg3 = (char *)(buf3);
    if (items > 3) {
      {
        if (!SvROK(ST(3)))
        croak("Argument 4 is not a reference.");
        arg4 = ST(3);
      }
    }
    result = (int)ipmi_sensor_t_rearm(arg1,arg2,arg3,arg4);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    if (alloc3 == SWIG_NEWOBJ) free((char*)buf3);
    
    XSRETURN(argvi);
    fail:;
    
    
    if (alloc3 == SWIG_NEWOBJ) free((char*)buf3);
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_hysteresis) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_hysteresis(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_hysteresis" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_sensor_t_get_hysteresis(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_set_hysteresis) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    unsigned int arg2 ;
    unsigned int arg3 ;
    swig_cb *arg4 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    unsigned int val3 ;
    int ecode3 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 3) || (items > 4)) {
      SWIG_croak("Usage: ipmi_sensor_t_set_hysteresis(self,positive_hysteresis,negative_hysteresis,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_set_hysteresis" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    ecode2 = SWIG_AsVal_unsigned_SS_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_sensor_t_set_hysteresis" "', argument " "2"" of type '" "unsigned int""'");
    } 
    arg2 = (unsigned int)(val2);
    ecode3 = SWIG_AsVal_unsigned_SS_int SWIG_PERL_CALL_ARGS_2(ST(2), &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ipmi_sensor_t_set_hysteresis" "', argument " "3"" of type '" "unsigned int""'");
    } 
    arg3 = (unsigned int)(val3);
    if (items > 3) {
      {
        if (!SvROK(ST(3)))
        croak("Argument 4 is not a reference.");
        arg4 = ST(3);
      }
    }
    result = (int)ipmi_sensor_t_set_hysteresis(arg1,arg2,arg3,arg4);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_default_thresholds) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_default_thresholds(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_default_thresholds" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    result = (char *)ipmi_sensor_t_get_default_thresholds(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    free((char*)result);
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_set_thresholds) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    char *arg2 = 0 ;
    swig_cb *arg3 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 ;
    char *buf2 = 0 ;
    int alloc2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 3)) {
      SWIG_croak("Usage: ipmi_sensor_t_set_thresholds(self,thresholds,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_set_thresholds" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2);
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ipmi_sensor_t_set_thresholds" "', argument " "2"" of type '" "char *""'");
    }
    arg2 = (char *)(buf2);
    if (items > 2) {
      {
        if (!SvROK(ST(2)))
        croak("Argument 3 is not a reference.");
        arg3 = ST(2);
      }
    }
    result = (int)ipmi_sensor_t_set_thresholds(arg1,arg2,arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
    
    XSRETURN(argvi);
    fail:;
    
    if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_thresholds) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_thresholds(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_thresholds" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_sensor_t_get_thresholds(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_value) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_value(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_value" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_sensor_t_get_value(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_lun) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_lun(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_lun" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    result = (int)ipmi_sensor_t_get_lun(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_num) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_num(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_num" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    result = (int)ipmi_sensor_t_get_num(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_sensor_type_string) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_sensor_type_string(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_sensor_type_string" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    result = (char *)ipmi_sensor_t_get_sensor_type_string(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_sensor_type) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_sensor_type(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_sensor_type" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    result = (int)ipmi_sensor_t_get_sensor_type(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_event_reading_type_string) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_event_reading_type_string(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_event_reading_type_string" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    result = (char *)ipmi_sensor_t_get_event_reading_type_string(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_event_reading_type) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_event_reading_type(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_event_reading_type" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    result = (int)ipmi_sensor_t_get_event_reading_type(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_rate_unit_string) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_rate_unit_string(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_rate_unit_string" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    result = (char *)ipmi_sensor_t_get_rate_unit_string(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_rate_unit) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_rate_unit(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_rate_unit" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    result = (int)ipmi_sensor_t_get_rate_unit(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_base_unit_string) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_base_unit_string(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_base_unit_string" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    result = (char *)ipmi_sensor_t_get_base_unit_string(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_base_unit) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_base_unit(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_base_unit" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    result = (int)ipmi_sensor_t_get_base_unit(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_modifier_unit_string) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_modifier_unit_string(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_modifier_unit_string" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    result = (char *)ipmi_sensor_t_get_modifier_unit_string(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_modifier_unit) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_modifier_unit(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_modifier_unit" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    result = (int)ipmi_sensor_t_get_modifier_unit(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_modifier_unit_use) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_modifier_unit_use(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_modifier_unit_use" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    result = (int)ipmi_sensor_t_get_modifier_unit_use(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_percentage) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_percentage(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_percentage" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    result = (int)ipmi_sensor_t_get_percentage(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_reading_name_string) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    int arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_sensor_t_reading_name_string(self,offset);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_reading_name_string" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_sensor_t_reading_name_string" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    result = (char *)ipmi_sensor_t_reading_name_string(arg1,arg2);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_entity_id) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_entity_id(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_entity_id" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    result = (int)ipmi_sensor_t_get_entity_id(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_entity_instance) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_entity_instance(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_entity_instance" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    result = (int)ipmi_sensor_t_get_entity_instance(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_entity) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    ipmi_entity_t *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_entity(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_entity" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    result = (ipmi_entity_t *)ipmi_sensor_t_get_entity(arg1);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ipmi_entity_t, 0 | SWIG_SHADOW); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_sensor_init_scanning) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_sensor_init_scanning(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_sensor_init_scanning" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    result = (int)ipmi_sensor_t_get_sensor_init_scanning(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_sensor_init_events) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_sensor_init_events(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_sensor_init_events" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    result = (int)ipmi_sensor_t_get_sensor_init_events(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_sensor_init_thresholds) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_sensor_init_thresholds(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_sensor_init_thresholds" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    result = (int)ipmi_sensor_t_get_sensor_init_thresholds(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_sensor_init_hysteresis) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_sensor_init_hysteresis(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_sensor_init_hysteresis" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    result = (int)ipmi_sensor_t_get_sensor_init_hysteresis(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_sensor_init_type) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_sensor_init_type(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_sensor_init_type" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    result = (int)ipmi_sensor_t_get_sensor_init_type(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_sensor_init_pu_events) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_sensor_init_pu_events(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_sensor_init_pu_events" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    result = (int)ipmi_sensor_t_get_sensor_init_pu_events(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_sensor_init_pu_scanning) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_sensor_init_pu_scanning(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_sensor_init_pu_scanning" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    result = (int)ipmi_sensor_t_get_sensor_init_pu_scanning(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_ignore_if_no_entity) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_ignore_if_no_entity(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_ignore_if_no_entity" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    result = (int)ipmi_sensor_t_get_ignore_if_no_entity(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_supports_auto_rearm) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_supports_auto_rearm(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_supports_auto_rearm" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    result = (int)ipmi_sensor_t_get_supports_auto_rearm(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_threshold_access) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_threshold_access(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_threshold_access" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    result = (int)ipmi_sensor_t_get_threshold_access(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_hysteresis_support) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_hysteresis_support(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_hysteresis_support" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    result = (int)ipmi_sensor_t_get_hysteresis_support(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_event_support) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_event_support(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_event_support" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    result = (int)ipmi_sensor_t_get_event_support(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_sensor_direction) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_sensor_direction(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_sensor_direction" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    result = (int)ipmi_sensor_t_get_sensor_direction(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_is_readable) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sensor_t_is_readable(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_is_readable" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    result = (int)ipmi_sensor_t_is_readable(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_threshold_event_supported) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    char *arg2 = 0 ;
    int *arg3 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 ;
    char *buf2 = 0 ;
    int alloc2 = 0 ;
    int ivalue3 ;
    int argvi = 0;
    SV * _saved[1] ;
    int result;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
      SWIG_croak("Usage: ipmi_sensor_t_threshold_event_supported(self,event,val);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_threshold_event_supported" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2);
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ipmi_sensor_t_threshold_event_supported" "', argument " "2"" of type '" "char *""'");
    }
    arg2 = (char *)(buf2);
    {
      SV* tempsv;
      if (!SvROK(ST(2))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(2));
      if (!SvIOK(tempsv)) {
        ivalue3 = 0;
      } else {
        ivalue3 = SvIV(tempsv);
      }
      arg3 = &ivalue3;
    }
    _saved[0] = ST(2);
    result = (int)ipmi_sensor_t_threshold_event_supported(arg1,arg2,arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setiv(tempsv, *arg3);
    }
    
    if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
    
    XSRETURN(argvi);
    fail:;
    
    if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_threshold_settable) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    char *arg2 = 0 ;
    int *arg3 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 ;
    char *buf2 = 0 ;
    int alloc2 = 0 ;
    int ivalue3 ;
    int argvi = 0;
    SV * _saved[1] ;
    int result;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
      SWIG_croak("Usage: ipmi_sensor_t_threshold_settable(self,threshold,val);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_threshold_settable" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2);
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ipmi_sensor_t_threshold_settable" "', argument " "2"" of type '" "char *""'");
    }
    arg2 = (char *)(buf2);
    {
      SV* tempsv;
      if (!SvROK(ST(2))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(2));
      if (!SvIOK(tempsv)) {
        ivalue3 = 0;
      } else {
        ivalue3 = SvIV(tempsv);
      }
      arg3 = &ivalue3;
    }
    _saved[0] = ST(2);
    result = (int)ipmi_sensor_t_threshold_settable(arg1,arg2,arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setiv(tempsv, *arg3);
    }
    
    if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
    
    XSRETURN(argvi);
    fail:;
    
    if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_threshold_readable) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    char *arg2 = 0 ;
    int *arg3 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 ;
    char *buf2 = 0 ;
    int alloc2 = 0 ;
    int ivalue3 ;
    int argvi = 0;
    SV * _saved[1] ;
    int result;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
      SWIG_croak("Usage: ipmi_sensor_t_threshold_readable(self,threshold,val);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_threshold_readable" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2);
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ipmi_sensor_t_threshold_readable" "', argument " "2"" of type '" "char *""'");
    }
    arg2 = (char *)(buf2);
    {
      SV* tempsv;
      if (!SvROK(ST(2))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(2));
      if (!SvIOK(tempsv)) {
        ivalue3 = 0;
      } else {
        ivalue3 = SvIV(tempsv);
      }
      arg3 = &ivalue3;
    }
    _saved[0] = ST(2);
    result = (int)ipmi_sensor_t_threshold_readable(arg1,arg2,arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setiv(tempsv, *arg3);
    }
    
    if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
    
    XSRETURN(argvi);
    fail:;
    
    if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_threshold_reading_supported) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    char *arg2 = 0 ;
    int *arg3 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 ;
    char *buf2 = 0 ;
    int alloc2 = 0 ;
    int ivalue3 ;
    int argvi = 0;
    SV * _saved[1] ;
    int result;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
      SWIG_croak("Usage: ipmi_sensor_t_threshold_reading_supported(self,threshold,val);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_threshold_reading_supported" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2);
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ipmi_sensor_t_threshold_reading_supported" "', argument " "2"" of type '" "char *""'");
    }
    arg2 = (char *)(buf2);
    {
      SV* tempsv;
      if (!SvROK(ST(2))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(2));
      if (!SvIOK(tempsv)) {
        ivalue3 = 0;
      } else {
        ivalue3 = SvIV(tempsv);
      }
      arg3 = &ivalue3;
    }
    _saved[0] = ST(2);
    result = (int)ipmi_sensor_t_threshold_reading_supported(arg1,arg2,arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setiv(tempsv, *arg3);
    }
    
    if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
    
    XSRETURN(argvi);
    fail:;
    
    if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_discrete_event_supported) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    char *arg2 = 0 ;
    int *arg3 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 ;
    char *buf2 = 0 ;
    int alloc2 = 0 ;
    int ivalue3 ;
    int argvi = 0;
    SV * _saved[1] ;
    int result;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
      SWIG_croak("Usage: ipmi_sensor_t_discrete_event_supported(self,event,val);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_discrete_event_supported" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2);
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ipmi_sensor_t_discrete_event_supported" "', argument " "2"" of type '" "char *""'");
    }
    arg2 = (char *)(buf2);
    {
      SV* tempsv;
      if (!SvROK(ST(2))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(2));
      if (!SvIOK(tempsv)) {
        ivalue3 = 0;
      } else {
        ivalue3 = SvIV(tempsv);
      }
      arg3 = &ivalue3;
    }
    _saved[0] = ST(2);
    result = (int)ipmi_sensor_t_discrete_event_supported(arg1,arg2,arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setiv(tempsv, *arg3);
    }
    
    if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
    
    XSRETURN(argvi);
    fail:;
    
    if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_discrete_event_readable) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    int arg2 ;
    int *arg3 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int ivalue3 ;
    int argvi = 0;
    SV * _saved[1] ;
    int result;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
      SWIG_croak("Usage: ipmi_sensor_t_discrete_event_readable(self,offset,val);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_discrete_event_readable" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_sensor_t_discrete_event_readable" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    {
      SV* tempsv;
      if (!SvROK(ST(2))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(2));
      if (!SvIOK(tempsv)) {
        ivalue3 = 0;
      } else {
        ivalue3 = SvIV(tempsv);
      }
      arg3 = &ivalue3;
    }
    _saved[0] = ST(2);
    result = (int)ipmi_sensor_t_discrete_event_readable(arg1,arg2,arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setiv(tempsv, *arg3);
    }
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_tolerance) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    int arg2 ;
    double *arg3 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    double dvalue3 ;
    int argvi = 0;
    SV * _saved[1] ;
    int result;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_tolerance(self,val,tolerance);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_tolerance" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_sensor_t_get_tolerance" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    {
      SV* tempsv;
      if (!SvROK(ST(2))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(2));
      if ((!SvNOK(tempsv)) && (!SvIOK(tempsv))) {
        dvalue3 = 0.0;
      } else {
        dvalue3 = SvNV(tempsv);
      }
      arg3 = &dvalue3;
    }
    _saved[0] = ST(2);
    result = (int)ipmi_sensor_t_get_tolerance(arg1,arg2,arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setnv(tempsv, *arg3);
    }
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_accuracy) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    int arg2 ;
    double *arg3 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    double dvalue3 ;
    int argvi = 0;
    SV * _saved[1] ;
    int result;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_accuracy(self,val,accuracy);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_accuracy" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_sensor_t_get_accuracy" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    {
      SV* tempsv;
      if (!SvROK(ST(2))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(2));
      if ((!SvNOK(tempsv)) && (!SvIOK(tempsv))) {
        dvalue3 = 0.0;
      } else {
        dvalue3 = SvNV(tempsv);
      }
      arg3 = &dvalue3;
    }
    _saved[0] = ST(2);
    result = (int)ipmi_sensor_t_get_accuracy(arg1,arg2,arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setnv(tempsv, *arg3);
    }
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_normal_min_specified) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_normal_min_specified(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_normal_min_specified" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    result = (int)ipmi_sensor_t_get_normal_min_specified(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_normal_min) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    double *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double dvalue2 ;
    int argvi = 0;
    SV * _saved[1] ;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_normal_min(self,normal_min);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_normal_min" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    {
      SV* tempsv;
      if (!SvROK(ST(1))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(1));
      if ((!SvNOK(tempsv)) && (!SvIOK(tempsv))) {
        dvalue2 = 0.0;
      } else {
        dvalue2 = SvNV(tempsv);
      }
      arg2 = &dvalue2;
    }
    _saved[0] = ST(1);
    result = (int)ipmi_sensor_t_get_normal_min(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setnv(tempsv, *arg2);
    }
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_normal_max_specified) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_normal_max_specified(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_normal_max_specified" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    result = (int)ipmi_sensor_t_get_normal_max_specified(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_normal_max) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    double *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double dvalue2 ;
    int argvi = 0;
    SV * _saved[1] ;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_normal_max(self,normal_max);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_normal_max" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    {
      SV* tempsv;
      if (!SvROK(ST(1))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(1));
      if ((!SvNOK(tempsv)) && (!SvIOK(tempsv))) {
        dvalue2 = 0.0;
      } else {
        dvalue2 = SvNV(tempsv);
      }
      arg2 = &dvalue2;
    }
    _saved[0] = ST(1);
    result = (int)ipmi_sensor_t_get_normal_max(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setnv(tempsv, *arg2);
    }
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_nominal_reading_specified) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_nominal_reading_specified(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_nominal_reading_specified" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    result = (int)ipmi_sensor_t_get_nominal_reading_specified(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_nominal_reading) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    double *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double dvalue2 ;
    int argvi = 0;
    SV * _saved[1] ;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_nominal_reading(self,nominal_reading);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_nominal_reading" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    {
      SV* tempsv;
      if (!SvROK(ST(1))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(1));
      if ((!SvNOK(tempsv)) && (!SvIOK(tempsv))) {
        dvalue2 = 0.0;
      } else {
        dvalue2 = SvNV(tempsv);
      }
      arg2 = &dvalue2;
    }
    _saved[0] = ST(1);
    result = (int)ipmi_sensor_t_get_nominal_reading(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setnv(tempsv, *arg2);
    }
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_sensor_max) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    double *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double dvalue2 ;
    int argvi = 0;
    SV * _saved[1] ;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_sensor_max(self,sensor_max);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_sensor_max" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    {
      SV* tempsv;
      if (!SvROK(ST(1))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(1));
      if ((!SvNOK(tempsv)) && (!SvIOK(tempsv))) {
        dvalue2 = 0.0;
      } else {
        dvalue2 = SvNV(tempsv);
      }
      arg2 = &dvalue2;
    }
    _saved[0] = ST(1);
    result = (int)ipmi_sensor_t_get_sensor_max(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setnv(tempsv, *arg2);
    }
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_sensor_min) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    double *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double dvalue2 ;
    int argvi = 0;
    SV * _saved[1] ;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_sensor_min(self,sensor_min);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_sensor_min" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    {
      SV* tempsv;
      if (!SvROK(ST(1))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(1));
      if ((!SvNOK(tempsv)) && (!SvIOK(tempsv))) {
        dvalue2 = 0.0;
      } else {
        dvalue2 = SvNV(tempsv);
      }
      arg2 = &dvalue2;
    }
    _saved[0] = ST(1);
    result = (int)ipmi_sensor_t_get_sensor_min(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setnv(tempsv, *arg2);
    }
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_oem1) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_oem1(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_oem1" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    result = (int)ipmi_sensor_t_get_oem1(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_sensor_id) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_sensor_id(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_sensor_id" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    result = (char *)ipmi_sensor_t_get_sensor_id(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    free((char*)result);
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_t_get_mc) {
  {
    ipmi_sensor_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    ipmi_mc_t *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sensor_t_get_mc(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_t_get_mc" "', argument " "1"" of type '" "ipmi_sensor_t *""'"); 
    }
    arg1 = (ipmi_sensor_t *)(argp1);
    result = (ipmi_mc_t *)ipmi_sensor_t_get_mc(arg1);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ipmi_mc_t, 0 | SWIG_SHADOW); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_delete_ipmi_sensor_id_t) {
  {
    ipmi_sensor_id_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: delete_ipmi_sensor_id_t(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_id_t, SWIG_POINTER_DISOWN |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_ipmi_sensor_id_t" "', argument " "1"" of type '" "ipmi_sensor_id_t *""'"); 
    }
    arg1 = (ipmi_sensor_id_t *)(argp1);
    delete_ipmi_sensor_id_t(arg1);
    ST(argvi) = &PL_sv_undef;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_id_t_cmp) {
  {
    ipmi_sensor_id_t *arg1 = 0 ;
    ipmi_sensor_id_t *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_sensor_id_t_cmp(self,other);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_id_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_id_t_cmp" "', argument " "1"" of type '" "ipmi_sensor_id_t *""'"); 
    }
    arg1 = (ipmi_sensor_id_t *)(argp1);
    res2 = SWIG_ConvertPtr(ST(1), &argp2,SWIGTYPE_p_ipmi_sensor_id_t, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ipmi_sensor_id_t_cmp" "', argument " "2"" of type '" "ipmi_sensor_id_t *""'"); 
    }
    arg2 = (ipmi_sensor_id_t *)(argp2);
    result = (int)ipmi_sensor_id_t_cmp(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sensor_id_t_to_sensor) {
  {
    ipmi_sensor_id_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_sensor_id_t_to_sensor(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sensor_id_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sensor_id_t_to_sensor" "', argument " "1"" of type '" "ipmi_sensor_id_t *""'"); 
    }
    arg1 = (ipmi_sensor_id_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_sensor_id_t_to_sensor(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_control_t_get_name) {
  {
    ipmi_control_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_control_t_get_name(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_control_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_control_t_get_name" "', argument " "1"" of type '" "ipmi_control_t *""'"); 
    }
    arg1 = (ipmi_control_t *)(argp1);
    result = (char *)ipmi_control_t_get_name(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    free((char*)result);
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_control_t_get_id) {
  {
    ipmi_control_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    ipmi_control_id_t *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_control_t_get_id(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_control_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_control_t_get_id" "', argument " "1"" of type '" "ipmi_control_t *""'"); 
    }
    arg1 = (ipmi_control_t *)(argp1);
    result = (ipmi_control_id_t *)ipmi_control_t_get_id(arg1);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ipmi_control_id_t, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_control_t_get_type_string) {
  {
    ipmi_control_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_control_t_get_type_string(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_control_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_control_t_get_type_string" "', argument " "1"" of type '" "ipmi_control_t *""'"); 
    }
    arg1 = (ipmi_control_t *)(argp1);
    result = (char *)ipmi_control_t_get_type_string(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_control_t_get_type) {
  {
    ipmi_control_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_control_t_get_type(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_control_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_control_t_get_type" "', argument " "1"" of type '" "ipmi_control_t *""'"); 
    }
    arg1 = (ipmi_control_t *)(argp1);
    result = (int)ipmi_control_t_get_type(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_control_t_get_entity_id) {
  {
    ipmi_control_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_control_t_get_entity_id(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_control_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_control_t_get_entity_id" "', argument " "1"" of type '" "ipmi_control_t *""'"); 
    }
    arg1 = (ipmi_control_t *)(argp1);
    result = (int)ipmi_control_t_get_entity_id(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_control_t_get_entity_instance) {
  {
    ipmi_control_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_control_t_get_entity_instance(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_control_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_control_t_get_entity_instance" "', argument " "1"" of type '" "ipmi_control_t *""'"); 
    }
    arg1 = (ipmi_control_t *)(argp1);
    result = (int)ipmi_control_t_get_entity_instance(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_control_t_get_entity) {
  {
    ipmi_control_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    ipmi_entity_t *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_control_t_get_entity(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_control_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_control_t_get_entity" "', argument " "1"" of type '" "ipmi_control_t *""'"); 
    }
    arg1 = (ipmi_control_t *)(argp1);
    result = (ipmi_entity_t *)ipmi_control_t_get_entity(arg1);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ipmi_entity_t, 0 | SWIG_SHADOW); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_control_t_is_settable) {
  {
    ipmi_control_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_control_t_is_settable(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_control_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_control_t_is_settable" "', argument " "1"" of type '" "ipmi_control_t *""'"); 
    }
    arg1 = (ipmi_control_t *)(argp1);
    result = (int)ipmi_control_t_is_settable(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_control_t_is_readable) {
  {
    ipmi_control_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_control_t_is_readable(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_control_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_control_t_is_readable" "', argument " "1"" of type '" "ipmi_control_t *""'"); 
    }
    arg1 = (ipmi_control_t *)(argp1);
    result = (int)ipmi_control_t_is_readable(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_control_t_get_ignore_if_no_entity) {
  {
    ipmi_control_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_control_t_get_ignore_if_no_entity(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_control_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_control_t_get_ignore_if_no_entity" "', argument " "1"" of type '" "ipmi_control_t *""'"); 
    }
    arg1 = (ipmi_control_t *)(argp1);
    result = (int)ipmi_control_t_get_ignore_if_no_entity(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_control_t_get_control_id) {
  {
    ipmi_control_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_control_t_get_control_id(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_control_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_control_t_get_control_id" "', argument " "1"" of type '" "ipmi_control_t *""'"); 
    }
    arg1 = (ipmi_control_t *)(argp1);
    result = (char *)ipmi_control_t_get_control_id(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    free((char*)result);
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_control_t_has_events) {
  {
    ipmi_control_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_control_t_has_events(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_control_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_control_t_has_events" "', argument " "1"" of type '" "ipmi_control_t *""'"); 
    }
    arg1 = (ipmi_control_t *)(argp1);
    result = (int)ipmi_control_t_has_events(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_control_t_get_num_vals) {
  {
    ipmi_control_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_control_t_get_num_vals(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_control_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_control_t_get_num_vals" "', argument " "1"" of type '" "ipmi_control_t *""'"); 
    }
    arg1 = (ipmi_control_t *)(argp1);
    result = (int)ipmi_control_t_get_num_vals(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_control_t_set_val) {
  {
    ipmi_control_t *arg1 = 0 ;
    intarray arg2 ;
    swig_cb *arg3 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    {
      (&arg2)->val = NULL;
    }
    if ((items < 2) || (items > 3)) {
      SWIG_croak("Usage: ipmi_control_t_set_val(self,val,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_control_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_control_t_set_val" "', argument " "1"" of type '" "ipmi_control_t *""'"); 
    }
    arg1 = (ipmi_control_t *)(argp1);
    {
      AV *tempav;
      I32 len;
      int i;
      SV  **tv;
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      if (SvTYPE(SvRV(ST(1))) != SVt_PVAV)
      croak("Argument 2 is not an array.");
      tempav = (AV*)SvRV(ST(1));
      len = av_len(tempav);
      (&arg2)->val = (int *) malloc((len+2)*sizeof(int));
      (&arg2)->len = len + 1;
      
      for (i = 0; i <= len; i++) {
        tv = av_fetch(tempav, i, 0);
        (&arg2)->val[i] = SvIV(*tv);
      }
    }
    if (items > 2) {
      {
        if (!SvROK(ST(2)))
        croak("Argument 3 is not a reference.");
        arg3 = ST(2);
      }
    }
    result = (int)ipmi_control_t_set_val(arg1,arg2,arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    {
      if ((&arg2)->val)
      free((&arg2)->val);
    }
    
    XSRETURN(argvi);
    fail:;
    
    {
      if ((&arg2)->val)
      free((&arg2)->val);
    }
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_control_t_get_val) {
  {
    ipmi_control_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_control_t_get_val(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_control_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_control_t_get_val" "', argument " "1"" of type '" "ipmi_control_t *""'"); 
    }
    arg1 = (ipmi_control_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_control_t_get_val(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_control_t_add_event_handler) {
  {
    ipmi_control_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_control_t_add_event_handler(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_control_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_control_t_add_event_handler" "', argument " "1"" of type '" "ipmi_control_t *""'"); 
    }
    arg1 = (ipmi_control_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_control_t_add_event_handler(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_control_t_remove_event_handler) {
  {
    ipmi_control_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_control_t_remove_event_handler(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_control_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_control_t_remove_event_handler" "', argument " "1"" of type '" "ipmi_control_t *""'"); 
    }
    arg1 = (ipmi_control_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_control_t_remove_event_handler(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_control_t_light_set_with_setting) {
  {
    ipmi_control_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_control_t_light_set_with_setting(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_control_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_control_t_light_set_with_setting" "', argument " "1"" of type '" "ipmi_control_t *""'"); 
    }
    arg1 = (ipmi_control_t *)(argp1);
    result = (int)ipmi_control_t_light_set_with_setting(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_control_t_light_is_color_supported) {
  {
    ipmi_control_t *arg1 = 0 ;
    int arg2 ;
    int arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
      SWIG_croak("Usage: ipmi_control_t_light_is_color_supported(self,light_num,color);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_control_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_control_t_light_is_color_supported" "', argument " "1"" of type '" "ipmi_control_t *""'"); 
    }
    arg1 = (ipmi_control_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_control_t_light_is_color_supported" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    ecode3 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(2), &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ipmi_control_t_light_is_color_supported" "', argument " "3"" of type '" "int""'");
    } 
    arg3 = (int)(val3);
    result = (int)ipmi_control_t_light_is_color_supported(arg1,arg2,arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_control_t_light_has_local_control) {
  {
    ipmi_control_t *arg1 = 0 ;
    int arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_control_t_light_has_local_control(self,light_num);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_control_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_control_t_light_has_local_control" "', argument " "1"" of type '" "ipmi_control_t *""'"); 
    }
    arg1 = (ipmi_control_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_control_t_light_has_local_control" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    result = (int)ipmi_control_t_light_has_local_control(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_control_t_set_light) {
  {
    ipmi_control_t *arg1 = 0 ;
    char *arg2 = 0 ;
    swig_cb *arg3 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 ;
    char *buf2 = 0 ;
    int alloc2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 3)) {
      SWIG_croak("Usage: ipmi_control_t_set_light(self,settings,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_control_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_control_t_set_light" "', argument " "1"" of type '" "ipmi_control_t *""'"); 
    }
    arg1 = (ipmi_control_t *)(argp1);
    res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2);
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ipmi_control_t_set_light" "', argument " "2"" of type '" "char *""'");
    }
    arg2 = (char *)(buf2);
    if (items > 2) {
      {
        if (!SvROK(ST(2)))
        croak("Argument 3 is not a reference.");
        arg3 = ST(2);
      }
    }
    result = (int)ipmi_control_t_set_light(arg1,arg2,arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
    
    XSRETURN(argvi);
    fail:;
    
    if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_control_t_get_light) {
  {
    ipmi_control_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_control_t_get_light(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_control_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_control_t_get_light" "', argument " "1"" of type '" "ipmi_control_t *""'"); 
    }
    arg1 = (ipmi_control_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_control_t_get_light(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_control_t_get_num_light_values) {
  {
    ipmi_control_t *arg1 = 0 ;
    int arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_control_t_get_num_light_values(self,light);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_control_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_control_t_get_num_light_values" "', argument " "1"" of type '" "ipmi_control_t *""'"); 
    }
    arg1 = (ipmi_control_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_control_t_get_num_light_values" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    result = (int)ipmi_control_t_get_num_light_values(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_control_t_get_num_light_transitions) {
  {
    ipmi_control_t *arg1 = 0 ;
    int arg2 ;
    int arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
      SWIG_croak("Usage: ipmi_control_t_get_num_light_transitions(self,light,value);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_control_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_control_t_get_num_light_transitions" "', argument " "1"" of type '" "ipmi_control_t *""'"); 
    }
    arg1 = (ipmi_control_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_control_t_get_num_light_transitions" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    ecode3 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(2), &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ipmi_control_t_get_num_light_transitions" "', argument " "3"" of type '" "int""'");
    } 
    arg3 = (int)(val3);
    result = (int)ipmi_control_t_get_num_light_transitions(arg1,arg2,arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_control_t_get_light_color) {
  {
    ipmi_control_t *arg1 = 0 ;
    int arg2 ;
    int arg3 ;
    int arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    int val4 ;
    int ecode4 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 4) || (items > 4)) {
      SWIG_croak("Usage: ipmi_control_t_get_light_color(self,light,value,transition);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_control_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_control_t_get_light_color" "', argument " "1"" of type '" "ipmi_control_t *""'"); 
    }
    arg1 = (ipmi_control_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_control_t_get_light_color" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    ecode3 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(2), &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ipmi_control_t_get_light_color" "', argument " "3"" of type '" "int""'");
    } 
    arg3 = (int)(val3);
    ecode4 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(3), &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "ipmi_control_t_get_light_color" "', argument " "4"" of type '" "int""'");
    } 
    arg4 = (int)(val4);
    result = (int)ipmi_control_t_get_light_color(arg1,arg2,arg3,arg4);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_control_t_get_light_color_time) {
  {
    ipmi_control_t *arg1 = 0 ;
    int arg2 ;
    int arg3 ;
    int arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    int val4 ;
    int ecode4 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 4) || (items > 4)) {
      SWIG_croak("Usage: ipmi_control_t_get_light_color_time(self,light,value,transition);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_control_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_control_t_get_light_color_time" "', argument " "1"" of type '" "ipmi_control_t *""'"); 
    }
    arg1 = (ipmi_control_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_control_t_get_light_color_time" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    ecode3 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(2), &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ipmi_control_t_get_light_color_time" "', argument " "3"" of type '" "int""'");
    } 
    arg3 = (int)(val3);
    ecode4 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(3), &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "ipmi_control_t_get_light_color_time" "', argument " "4"" of type '" "int""'");
    } 
    arg4 = (int)(val4);
    result = (int)ipmi_control_t_get_light_color_time(arg1,arg2,arg3,arg4);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_control_t_identifier_set_val) {
  {
    ipmi_control_t *arg1 = 0 ;
    intarray arg2 ;
    swig_cb *arg3 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    {
      (&arg2)->val = NULL;
    }
    if ((items < 2) || (items > 3)) {
      SWIG_croak("Usage: ipmi_control_t_identifier_set_val(self,val,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_control_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_control_t_identifier_set_val" "', argument " "1"" of type '" "ipmi_control_t *""'"); 
    }
    arg1 = (ipmi_control_t *)(argp1);
    {
      AV *tempav;
      I32 len;
      int i;
      SV  **tv;
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      if (SvTYPE(SvRV(ST(1))) != SVt_PVAV)
      croak("Argument 2 is not an array.");
      tempav = (AV*)SvRV(ST(1));
      len = av_len(tempav);
      (&arg2)->val = (int *) malloc((len+2)*sizeof(int));
      (&arg2)->len = len + 1;
      
      for (i = 0; i <= len; i++) {
        tv = av_fetch(tempav, i, 0);
        (&arg2)->val[i] = SvIV(*tv);
      }
    }
    if (items > 2) {
      {
        if (!SvROK(ST(2)))
        croak("Argument 3 is not a reference.");
        arg3 = ST(2);
      }
    }
    result = (int)ipmi_control_t_identifier_set_val(arg1,arg2,arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    {
      if ((&arg2)->val)
      free((&arg2)->val);
    }
    
    XSRETURN(argvi);
    fail:;
    
    {
      if ((&arg2)->val)
      free((&arg2)->val);
    }
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_control_t_identifier_get_val) {
  {
    ipmi_control_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_control_t_identifier_get_val(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_control_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_control_t_identifier_get_val" "', argument " "1"" of type '" "ipmi_control_t *""'"); 
    }
    arg1 = (ipmi_control_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_control_t_identifier_get_val(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_control_t_identifier_get_max_length) {
  {
    ipmi_control_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_control_t_identifier_get_max_length(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_control_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_control_t_identifier_get_max_length" "', argument " "1"" of type '" "ipmi_control_t *""'"); 
    }
    arg1 = (ipmi_control_t *)(argp1);
    result = (int)ipmi_control_t_identifier_get_max_length(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_delete_ipmi_control_id_t) {
  {
    ipmi_control_id_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: delete_ipmi_control_id_t(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_control_id_t, SWIG_POINTER_DISOWN |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_ipmi_control_id_t" "', argument " "1"" of type '" "ipmi_control_id_t *""'"); 
    }
    arg1 = (ipmi_control_id_t *)(argp1);
    delete_ipmi_control_id_t(arg1);
    ST(argvi) = &PL_sv_undef;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_control_id_t_cmp) {
  {
    ipmi_control_id_t *arg1 = 0 ;
    ipmi_control_id_t *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_control_id_t_cmp(self,other);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_control_id_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_control_id_t_cmp" "', argument " "1"" of type '" "ipmi_control_id_t *""'"); 
    }
    arg1 = (ipmi_control_id_t *)(argp1);
    res2 = SWIG_ConvertPtr(ST(1), &argp2,SWIGTYPE_p_ipmi_control_id_t, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ipmi_control_id_t_cmp" "', argument " "2"" of type '" "ipmi_control_id_t *""'"); 
    }
    arg2 = (ipmi_control_id_t *)(argp2);
    result = (int)ipmi_control_id_t_cmp(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_control_id_t_to_control) {
  {
    ipmi_control_id_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_control_id_t_to_control(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_control_id_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_control_id_t_to_control" "', argument " "1"" of type '" "ipmi_control_id_t *""'"); 
    }
    arg1 = (ipmi_control_id_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_control_id_t_to_control(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_delete_ipmi_channel_info_t) {
  {
    ipmi_channel_info_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: delete_ipmi_channel_info_t(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_channel_info_t, SWIG_POINTER_DISOWN |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_ipmi_channel_info_t" "', argument " "1"" of type '" "ipmi_channel_info_t *""'"); 
    }
    arg1 = (ipmi_channel_info_t *)(argp1);
    delete_ipmi_channel_info_t(arg1);
    ST(argvi) = &PL_sv_undef;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_channel_info_t_copy) {
  {
    ipmi_channel_info_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    ipmi_channel_info_t *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_channel_info_t_copy(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_channel_info_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_channel_info_t_copy" "', argument " "1"" of type '" "ipmi_channel_info_t *""'"); 
    }
    arg1 = (ipmi_channel_info_t *)(argp1);
    result = (ipmi_channel_info_t *)ipmi_channel_info_t_copy(arg1);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ipmi_channel_info_t, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_channel_info_t_get_channel) {
  {
    ipmi_channel_info_t *arg1 = 0 ;
    int *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int ivalue2 ;
    int argvi = 0;
    SV * _saved[1] ;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_channel_info_t_get_channel(self,channel);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_channel_info_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_channel_info_t_get_channel" "', argument " "1"" of type '" "ipmi_channel_info_t *""'"); 
    }
    arg1 = (ipmi_channel_info_t *)(argp1);
    {
      SV* tempsv;
      if (!SvROK(ST(1))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(1));
      if (!SvIOK(tempsv)) {
        ivalue2 = 0;
      } else {
        ivalue2 = SvIV(tempsv);
      }
      arg2 = &ivalue2;
    }
    _saved[0] = ST(1);
    result = (int)ipmi_channel_info_t_get_channel(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setiv(tempsv, *arg2);
    }
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_channel_info_t_get_medium) {
  {
    ipmi_channel_info_t *arg1 = 0 ;
    int *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int ivalue2 ;
    int argvi = 0;
    SV * _saved[1] ;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_channel_info_t_get_medium(self,medium);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_channel_info_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_channel_info_t_get_medium" "', argument " "1"" of type '" "ipmi_channel_info_t *""'"); 
    }
    arg1 = (ipmi_channel_info_t *)(argp1);
    {
      SV* tempsv;
      if (!SvROK(ST(1))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(1));
      if (!SvIOK(tempsv)) {
        ivalue2 = 0;
      } else {
        ivalue2 = SvIV(tempsv);
      }
      arg2 = &ivalue2;
    }
    _saved[0] = ST(1);
    result = (int)ipmi_channel_info_t_get_medium(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setiv(tempsv, *arg2);
    }
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_channel_info_t_get_protocol_type) {
  {
    ipmi_channel_info_t *arg1 = 0 ;
    int *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int ivalue2 ;
    int argvi = 0;
    SV * _saved[1] ;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_channel_info_t_get_protocol_type(self,prot_type);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_channel_info_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_channel_info_t_get_protocol_type" "', argument " "1"" of type '" "ipmi_channel_info_t *""'"); 
    }
    arg1 = (ipmi_channel_info_t *)(argp1);
    {
      SV* tempsv;
      if (!SvROK(ST(1))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(1));
      if (!SvIOK(tempsv)) {
        ivalue2 = 0;
      } else {
        ivalue2 = SvIV(tempsv);
      }
      arg2 = &ivalue2;
    }
    _saved[0] = ST(1);
    result = (int)ipmi_channel_info_t_get_protocol_type(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setiv(tempsv, *arg2);
    }
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_channel_info_t_get_session_support) {
  {
    ipmi_channel_info_t *arg1 = 0 ;
    int *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int ivalue2 ;
    int argvi = 0;
    SV * _saved[1] ;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_channel_info_t_get_session_support(self,sup);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_channel_info_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_channel_info_t_get_session_support" "', argument " "1"" of type '" "ipmi_channel_info_t *""'"); 
    }
    arg1 = (ipmi_channel_info_t *)(argp1);
    {
      SV* tempsv;
      if (!SvROK(ST(1))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(1));
      if (!SvIOK(tempsv)) {
        ivalue2 = 0;
      } else {
        ivalue2 = SvIV(tempsv);
      }
      arg2 = &ivalue2;
    }
    _saved[0] = ST(1);
    result = (int)ipmi_channel_info_t_get_session_support(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setiv(tempsv, *arg2);
    }
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_channel_info_t_get_vendor_id) {
  {
    ipmi_channel_info_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_channel_info_t_get_vendor_id(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_channel_info_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_channel_info_t_get_vendor_id" "', argument " "1"" of type '" "ipmi_channel_info_t *""'"); 
    }
    arg1 = (ipmi_channel_info_t *)(argp1);
    result = (char *)ipmi_channel_info_t_get_vendor_id(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    free((char*)result);
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_channel_info_t_get_aux_info) {
  {
    ipmi_channel_info_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_channel_info_t_get_aux_info(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_channel_info_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_channel_info_t_get_aux_info" "', argument " "1"" of type '" "ipmi_channel_info_t *""'"); 
    }
    arg1 = (ipmi_channel_info_t *)(argp1);
    result = (char *)ipmi_channel_info_t_get_aux_info(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    free((char*)result);
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_delete_ipmi_channel_access_t) {
  {
    ipmi_channel_access_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: delete_ipmi_channel_access_t(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_channel_access_t, SWIG_POINTER_DISOWN |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_ipmi_channel_access_t" "', argument " "1"" of type '" "ipmi_channel_access_t *""'"); 
    }
    arg1 = (ipmi_channel_access_t *)(argp1);
    delete_ipmi_channel_access_t(arg1);
    ST(argvi) = &PL_sv_undef;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_channel_access_t_copy) {
  {
    ipmi_channel_access_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    ipmi_channel_access_t *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_channel_access_t_copy(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_channel_access_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_channel_access_t_copy" "', argument " "1"" of type '" "ipmi_channel_access_t *""'"); 
    }
    arg1 = (ipmi_channel_access_t *)(argp1);
    result = (ipmi_channel_access_t *)ipmi_channel_access_t_copy(arg1);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ipmi_channel_access_t, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_channel_access_t_get_channel) {
  {
    ipmi_channel_access_t *arg1 = 0 ;
    int *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int ivalue2 ;
    int argvi = 0;
    SV * _saved[1] ;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_channel_access_t_get_channel(self,channel);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_channel_access_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_channel_access_t_get_channel" "', argument " "1"" of type '" "ipmi_channel_access_t *""'"); 
    }
    arg1 = (ipmi_channel_access_t *)(argp1);
    {
      SV* tempsv;
      if (!SvROK(ST(1))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(1));
      if (!SvIOK(tempsv)) {
        ivalue2 = 0;
      } else {
        ivalue2 = SvIV(tempsv);
      }
      arg2 = &ivalue2;
    }
    _saved[0] = ST(1);
    result = (int)ipmi_channel_access_t_get_channel(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setiv(tempsv, *arg2);
    }
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_channel_access_t_get_alerting_enabled) {
  {
    ipmi_channel_access_t *arg1 = 0 ;
    int *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int ivalue2 ;
    int argvi = 0;
    SV * _saved[1] ;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_channel_access_t_get_alerting_enabled(self,enab);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_channel_access_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_channel_access_t_get_alerting_enabled" "', argument " "1"" of type '" "ipmi_channel_access_t *""'"); 
    }
    arg1 = (ipmi_channel_access_t *)(argp1);
    {
      SV* tempsv;
      if (!SvROK(ST(1))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(1));
      if (!SvIOK(tempsv)) {
        ivalue2 = 0;
      } else {
        ivalue2 = SvIV(tempsv);
      }
      arg2 = &ivalue2;
    }
    _saved[0] = ST(1);
    result = (int)ipmi_channel_access_t_get_alerting_enabled(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setiv(tempsv, *arg2);
    }
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_channel_access_t_set_alerting_enabled) {
  {
    ipmi_channel_access_t *arg1 = 0 ;
    int arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_channel_access_t_set_alerting_enabled(self,enab);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_channel_access_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_channel_access_t_set_alerting_enabled" "', argument " "1"" of type '" "ipmi_channel_access_t *""'"); 
    }
    arg1 = (ipmi_channel_access_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_channel_access_t_set_alerting_enabled" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    result = (int)ipmi_channel_access_t_set_alerting_enabled(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_channel_access_t_get_per_msg_auth) {
  {
    ipmi_channel_access_t *arg1 = 0 ;
    int *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int ivalue2 ;
    int argvi = 0;
    SV * _saved[1] ;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_channel_access_t_get_per_msg_auth(self,msg_auth);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_channel_access_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_channel_access_t_get_per_msg_auth" "', argument " "1"" of type '" "ipmi_channel_access_t *""'"); 
    }
    arg1 = (ipmi_channel_access_t *)(argp1);
    {
      SV* tempsv;
      if (!SvROK(ST(1))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(1));
      if (!SvIOK(tempsv)) {
        ivalue2 = 0;
      } else {
        ivalue2 = SvIV(tempsv);
      }
      arg2 = &ivalue2;
    }
    _saved[0] = ST(1);
    result = (int)ipmi_channel_access_t_get_per_msg_auth(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setiv(tempsv, *arg2);
    }
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_channel_access_t_set_per_msg_auth) {
  {
    ipmi_channel_access_t *arg1 = 0 ;
    int arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_channel_access_t_set_per_msg_auth(self,msg_auth);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_channel_access_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_channel_access_t_set_per_msg_auth" "', argument " "1"" of type '" "ipmi_channel_access_t *""'"); 
    }
    arg1 = (ipmi_channel_access_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_channel_access_t_set_per_msg_auth" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    result = (int)ipmi_channel_access_t_set_per_msg_auth(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_channel_access_t_get_user_auth) {
  {
    ipmi_channel_access_t *arg1 = 0 ;
    int *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int ivalue2 ;
    int argvi = 0;
    SV * _saved[1] ;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_channel_access_t_get_user_auth(self,user_auth);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_channel_access_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_channel_access_t_get_user_auth" "', argument " "1"" of type '" "ipmi_channel_access_t *""'"); 
    }
    arg1 = (ipmi_channel_access_t *)(argp1);
    {
      SV* tempsv;
      if (!SvROK(ST(1))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(1));
      if (!SvIOK(tempsv)) {
        ivalue2 = 0;
      } else {
        ivalue2 = SvIV(tempsv);
      }
      arg2 = &ivalue2;
    }
    _saved[0] = ST(1);
    result = (int)ipmi_channel_access_t_get_user_auth(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setiv(tempsv, *arg2);
    }
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_channel_access_t_set_user_auth) {
  {
    ipmi_channel_access_t *arg1 = 0 ;
    int arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_channel_access_t_set_user_auth(self,user_auth);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_channel_access_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_channel_access_t_set_user_auth" "', argument " "1"" of type '" "ipmi_channel_access_t *""'"); 
    }
    arg1 = (ipmi_channel_access_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_channel_access_t_set_user_auth" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    result = (int)ipmi_channel_access_t_set_user_auth(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_channel_access_t_get_access_mode) {
  {
    ipmi_channel_access_t *arg1 = 0 ;
    int *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int ivalue2 ;
    int argvi = 0;
    SV * _saved[1] ;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_channel_access_t_get_access_mode(self,access_mode);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_channel_access_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_channel_access_t_get_access_mode" "', argument " "1"" of type '" "ipmi_channel_access_t *""'"); 
    }
    arg1 = (ipmi_channel_access_t *)(argp1);
    {
      SV* tempsv;
      if (!SvROK(ST(1))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(1));
      if (!SvIOK(tempsv)) {
        ivalue2 = 0;
      } else {
        ivalue2 = SvIV(tempsv);
      }
      arg2 = &ivalue2;
    }
    _saved[0] = ST(1);
    result = (int)ipmi_channel_access_t_get_access_mode(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setiv(tempsv, *arg2);
    }
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_channel_access_t_set_access_mode) {
  {
    ipmi_channel_access_t *arg1 = 0 ;
    int arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_channel_access_t_set_access_mode(self,access_mode);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_channel_access_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_channel_access_t_set_access_mode" "', argument " "1"" of type '" "ipmi_channel_access_t *""'"); 
    }
    arg1 = (ipmi_channel_access_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_channel_access_t_set_access_mode" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    result = (int)ipmi_channel_access_t_set_access_mode(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_channel_access_t_get_privilege_limit) {
  {
    ipmi_channel_access_t *arg1 = 0 ;
    int *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int ivalue2 ;
    int argvi = 0;
    SV * _saved[1] ;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_channel_access_t_get_privilege_limit(self,priv_limit);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_channel_access_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_channel_access_t_get_privilege_limit" "', argument " "1"" of type '" "ipmi_channel_access_t *""'"); 
    }
    arg1 = (ipmi_channel_access_t *)(argp1);
    {
      SV* tempsv;
      if (!SvROK(ST(1))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(1));
      if (!SvIOK(tempsv)) {
        ivalue2 = 0;
      } else {
        ivalue2 = SvIV(tempsv);
      }
      arg2 = &ivalue2;
    }
    _saved[0] = ST(1);
    result = (int)ipmi_channel_access_t_get_privilege_limit(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setiv(tempsv, *arg2);
    }
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_channel_access_t_set_privilege_limit) {
  {
    ipmi_channel_access_t *arg1 = 0 ;
    int arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_channel_access_t_set_privilege_limit(self,priv_limit);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_channel_access_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_channel_access_t_set_privilege_limit" "', argument " "1"" of type '" "ipmi_channel_access_t *""'"); 
    }
    arg1 = (ipmi_channel_access_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_channel_access_t_set_privilege_limit" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    result = (int)ipmi_channel_access_t_set_privilege_limit(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_channel_access_t_setall) {
  {
    ipmi_channel_access_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_channel_access_t_setall(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_channel_access_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_channel_access_t_setall" "', argument " "1"" of type '" "ipmi_channel_access_t *""'"); 
    }
    arg1 = (ipmi_channel_access_t *)(argp1);
    result = (int)ipmi_channel_access_t_setall(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_delete_ipmi_user_t) {
  {
    ipmi_user_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: delete_ipmi_user_t(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_user_t, SWIG_POINTER_DISOWN |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_ipmi_user_t" "', argument " "1"" of type '" "ipmi_user_t *""'"); 
    }
    arg1 = (ipmi_user_t *)(argp1);
    delete_ipmi_user_t(arg1);
    ST(argvi) = &PL_sv_undef;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_user_t_copy) {
  {
    ipmi_user_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    ipmi_user_t *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_user_t_copy(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_user_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_user_t_copy" "', argument " "1"" of type '" "ipmi_user_t *""'"); 
    }
    arg1 = (ipmi_user_t *)(argp1);
    result = (ipmi_user_t *)ipmi_user_t_copy(arg1);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ipmi_user_t, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_user_t_get_channel) {
  {
    ipmi_user_t *arg1 = 0 ;
    int *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int ivalue2 ;
    int argvi = 0;
    SV * _saved[1] ;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_user_t_get_channel(self,channel);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_user_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_user_t_get_channel" "', argument " "1"" of type '" "ipmi_user_t *""'"); 
    }
    arg1 = (ipmi_user_t *)(argp1);
    {
      SV* tempsv;
      if (!SvROK(ST(1))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(1));
      if (!SvIOK(tempsv)) {
        ivalue2 = 0;
      } else {
        ivalue2 = SvIV(tempsv);
      }
      arg2 = &ivalue2;
    }
    _saved[0] = ST(1);
    result = (int)ipmi_user_t_get_channel(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setiv(tempsv, *arg2);
    }
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_user_t_get_num) {
  {
    ipmi_user_t *arg1 = 0 ;
    int *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int ivalue2 ;
    int argvi = 0;
    SV * _saved[1] ;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_user_t_get_num(self,num);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_user_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_user_t_get_num" "', argument " "1"" of type '" "ipmi_user_t *""'"); 
    }
    arg1 = (ipmi_user_t *)(argp1);
    {
      SV* tempsv;
      if (!SvROK(ST(1))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(1));
      if (!SvIOK(tempsv)) {
        ivalue2 = 0;
      } else {
        ivalue2 = SvIV(tempsv);
      }
      arg2 = &ivalue2;
    }
    _saved[0] = ST(1);
    result = (int)ipmi_user_t_get_num(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setiv(tempsv, *arg2);
    }
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_user_t_set_num) {
  {
    ipmi_user_t *arg1 = 0 ;
    int arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_user_t_set_num(self,num);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_user_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_user_t_set_num" "', argument " "1"" of type '" "ipmi_user_t *""'"); 
    }
    arg1 = (ipmi_user_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_user_t_set_num" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    result = (int)ipmi_user_t_set_num(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_user_t_get_name) {
  {
    ipmi_user_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_user_t_get_name(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_user_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_user_t_get_name" "', argument " "1"" of type '" "ipmi_user_t *""'"); 
    }
    arg1 = (ipmi_user_t *)(argp1);
    result = (char *)ipmi_user_t_get_name(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_user_t_set_name) {
  {
    ipmi_user_t *arg1 = 0 ;
    char *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 ;
    char *buf2 = 0 ;
    int alloc2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_user_t_set_name(self,name);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_user_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_user_t_set_name" "', argument " "1"" of type '" "ipmi_user_t *""'"); 
    }
    arg1 = (ipmi_user_t *)(argp1);
    res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2);
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ipmi_user_t_set_name" "', argument " "2"" of type '" "char *""'");
    }
    arg2 = (char *)(buf2);
    result = (int)ipmi_user_t_set_name(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
    XSRETURN(argvi);
    fail:;
    
    if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_user_t_set_password) {
  {
    ipmi_user_t *arg1 = 0 ;
    char *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 ;
    char *buf2 = 0 ;
    int alloc2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_user_t_set_password(self,pw);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_user_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_user_t_set_password" "', argument " "1"" of type '" "ipmi_user_t *""'"); 
    }
    arg1 = (ipmi_user_t *)(argp1);
    res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2);
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ipmi_user_t_set_password" "', argument " "2"" of type '" "char *""'");
    }
    arg2 = (char *)(buf2);
    result = (int)ipmi_user_t_set_password(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
    XSRETURN(argvi);
    fail:;
    
    if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_user_t_set_password2) {
  {
    ipmi_user_t *arg1 = 0 ;
    char *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 ;
    char *buf2 = 0 ;
    int alloc2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_user_t_set_password2(self,pw);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_user_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_user_t_set_password2" "', argument " "1"" of type '" "ipmi_user_t *""'"); 
    }
    arg1 = (ipmi_user_t *)(argp1);
    res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2);
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ipmi_user_t_set_password2" "', argument " "2"" of type '" "char *""'");
    }
    arg2 = (char *)(buf2);
    result = (int)ipmi_user_t_set_password2(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
    XSRETURN(argvi);
    fail:;
    
    if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_user_t_set_password_auto) {
  {
    ipmi_user_t *arg1 = 0 ;
    char *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 ;
    char *buf2 = 0 ;
    int alloc2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_user_t_set_password_auto(self,pw);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_user_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_user_t_set_password_auto" "', argument " "1"" of type '" "ipmi_user_t *""'"); 
    }
    arg1 = (ipmi_user_t *)(argp1);
    res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2);
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ipmi_user_t_set_password_auto" "', argument " "2"" of type '" "char *""'");
    }
    arg2 = (char *)(buf2);
    result = (int)ipmi_user_t_set_password_auto(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
    XSRETURN(argvi);
    fail:;
    
    if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_user_t_get_enable) {
  {
    ipmi_user_t *arg1 = 0 ;
    int *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int ivalue2 ;
    int argvi = 0;
    SV * _saved[1] ;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_user_t_get_enable(self,enable);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_user_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_user_t_get_enable" "', argument " "1"" of type '" "ipmi_user_t *""'"); 
    }
    arg1 = (ipmi_user_t *)(argp1);
    {
      SV* tempsv;
      if (!SvROK(ST(1))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(1));
      if (!SvIOK(tempsv)) {
        ivalue2 = 0;
      } else {
        ivalue2 = SvIV(tempsv);
      }
      arg2 = &ivalue2;
    }
    _saved[0] = ST(1);
    result = (int)ipmi_user_t_get_enable(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setiv(tempsv, *arg2);
    }
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_user_t_set_enable) {
  {
    ipmi_user_t *arg1 = 0 ;
    int arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_user_t_set_enable(self,val);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_user_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_user_t_set_enable" "', argument " "1"" of type '" "ipmi_user_t *""'"); 
    }
    arg1 = (ipmi_user_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_user_t_set_enable" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    result = (int)ipmi_user_t_set_enable(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_user_t_get_link_auth_enabled) {
  {
    ipmi_user_t *arg1 = 0 ;
    int *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int ivalue2 ;
    int argvi = 0;
    SV * _saved[1] ;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_user_t_get_link_auth_enabled(self,enable);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_user_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_user_t_get_link_auth_enabled" "', argument " "1"" of type '" "ipmi_user_t *""'"); 
    }
    arg1 = (ipmi_user_t *)(argp1);
    {
      SV* tempsv;
      if (!SvROK(ST(1))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(1));
      if (!SvIOK(tempsv)) {
        ivalue2 = 0;
      } else {
        ivalue2 = SvIV(tempsv);
      }
      arg2 = &ivalue2;
    }
    _saved[0] = ST(1);
    result = (int)ipmi_user_t_get_link_auth_enabled(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setiv(tempsv, *arg2);
    }
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_user_t_set_link_auth_enabled) {
  {
    ipmi_user_t *arg1 = 0 ;
    int arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_user_t_set_link_auth_enabled(self,val);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_user_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_user_t_set_link_auth_enabled" "', argument " "1"" of type '" "ipmi_user_t *""'"); 
    }
    arg1 = (ipmi_user_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_user_t_set_link_auth_enabled" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    result = (int)ipmi_user_t_set_link_auth_enabled(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_user_t_get_msg_auth_enabled) {
  {
    ipmi_user_t *arg1 = 0 ;
    int *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int ivalue2 ;
    int argvi = 0;
    SV * _saved[1] ;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_user_t_get_msg_auth_enabled(self,enable);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_user_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_user_t_get_msg_auth_enabled" "', argument " "1"" of type '" "ipmi_user_t *""'"); 
    }
    arg1 = (ipmi_user_t *)(argp1);
    {
      SV* tempsv;
      if (!SvROK(ST(1))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(1));
      if (!SvIOK(tempsv)) {
        ivalue2 = 0;
      } else {
        ivalue2 = SvIV(tempsv);
      }
      arg2 = &ivalue2;
    }
    _saved[0] = ST(1);
    result = (int)ipmi_user_t_get_msg_auth_enabled(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setiv(tempsv, *arg2);
    }
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_user_t_set_msg_auth_enabled) {
  {
    ipmi_user_t *arg1 = 0 ;
    int arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_user_t_set_msg_auth_enabled(self,val);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_user_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_user_t_set_msg_auth_enabled" "', argument " "1"" of type '" "ipmi_user_t *""'"); 
    }
    arg1 = (ipmi_user_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_user_t_set_msg_auth_enabled" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    result = (int)ipmi_user_t_set_msg_auth_enabled(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_user_t_get_access_cb_only) {
  {
    ipmi_user_t *arg1 = 0 ;
    int *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int ivalue2 ;
    int argvi = 0;
    SV * _saved[1] ;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_user_t_get_access_cb_only(self,cb);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_user_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_user_t_get_access_cb_only" "', argument " "1"" of type '" "ipmi_user_t *""'"); 
    }
    arg1 = (ipmi_user_t *)(argp1);
    {
      SV* tempsv;
      if (!SvROK(ST(1))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(1));
      if (!SvIOK(tempsv)) {
        ivalue2 = 0;
      } else {
        ivalue2 = SvIV(tempsv);
      }
      arg2 = &ivalue2;
    }
    _saved[0] = ST(1);
    result = (int)ipmi_user_t_get_access_cb_only(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setiv(tempsv, *arg2);
    }
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_user_t_set_access_cb_only) {
  {
    ipmi_user_t *arg1 = 0 ;
    int arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_user_t_set_access_cb_only(self,val);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_user_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_user_t_set_access_cb_only" "', argument " "1"" of type '" "ipmi_user_t *""'"); 
    }
    arg1 = (ipmi_user_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_user_t_set_access_cb_only" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    result = (int)ipmi_user_t_set_access_cb_only(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_user_t_get_privilege_limit) {
  {
    ipmi_user_t *arg1 = 0 ;
    int *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int ivalue2 ;
    int argvi = 0;
    SV * _saved[1] ;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_user_t_get_privilege_limit(self,limit);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_user_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_user_t_get_privilege_limit" "', argument " "1"" of type '" "ipmi_user_t *""'"); 
    }
    arg1 = (ipmi_user_t *)(argp1);
    {
      SV* tempsv;
      if (!SvROK(ST(1))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(1));
      if (!SvIOK(tempsv)) {
        ivalue2 = 0;
      } else {
        ivalue2 = SvIV(tempsv);
      }
      arg2 = &ivalue2;
    }
    _saved[0] = ST(1);
    result = (int)ipmi_user_t_get_privilege_limit(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setiv(tempsv, *arg2);
    }
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_user_t_set_privilege_limit) {
  {
    ipmi_user_t *arg1 = 0 ;
    int arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_user_t_set_privilege_limit(self,val);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_user_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_user_t_set_privilege_limit" "', argument " "1"" of type '" "ipmi_user_t *""'"); 
    }
    arg1 = (ipmi_user_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_user_t_set_privilege_limit" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    result = (int)ipmi_user_t_set_privilege_limit(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_user_t_get_session_limit) {
  {
    ipmi_user_t *arg1 = 0 ;
    int *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int ivalue2 ;
    int argvi = 0;
    SV * _saved[1] ;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_user_t_get_session_limit(self,limit);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_user_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_user_t_get_session_limit" "', argument " "1"" of type '" "ipmi_user_t *""'"); 
    }
    arg1 = (ipmi_user_t *)(argp1);
    {
      SV* tempsv;
      if (!SvROK(ST(1))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(1));
      if (!SvIOK(tempsv)) {
        ivalue2 = 0;
      } else {
        ivalue2 = SvIV(tempsv);
      }
      arg2 = &ivalue2;
    }
    _saved[0] = ST(1);
    result = (int)ipmi_user_t_get_session_limit(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setiv(tempsv, *arg2);
    }
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_user_t_set_session_limit) {
  {
    ipmi_user_t *arg1 = 0 ;
    int arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_user_t_set_session_limit(self,val);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_user_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_user_t_set_session_limit" "', argument " "1"" of type '" "ipmi_user_t *""'"); 
    }
    arg1 = (ipmi_user_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_user_t_set_session_limit" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    result = (int)ipmi_user_t_set_session_limit(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_user_t_set_all) {
  {
    ipmi_user_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_user_t_set_all(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_user_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_user_t_set_all" "', argument " "1"" of type '" "ipmi_user_t *""'"); 
    }
    arg1 = (ipmi_user_t *)(argp1);
    result = (int)ipmi_user_t_set_all(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_delete_ipmi_lanparm_t) {
  {
    ipmi_lanparm_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: delete_ipmi_lanparm_t(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_lanparm_t, SWIG_POINTER_DISOWN |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_ipmi_lanparm_t" "', argument " "1"" of type '" "ipmi_lanparm_t *""'"); 
    }
    arg1 = (ipmi_lanparm_t *)(argp1);
    delete_ipmi_lanparm_t(arg1);
    ST(argvi) = &PL_sv_undef;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_lanparm_t_get_mc_id) {
  {
    ipmi_lanparm_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    ipmi_mcid_t *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_lanparm_t_get_mc_id(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_lanparm_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_lanparm_t_get_mc_id" "', argument " "1"" of type '" "ipmi_lanparm_t *""'"); 
    }
    arg1 = (ipmi_lanparm_t *)(argp1);
    result = (ipmi_mcid_t *)ipmi_lanparm_t_get_mc_id(arg1);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ipmi_mcid_t, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_lanparm_t_get_channel) {
  {
    ipmi_lanparm_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_lanparm_t_get_channel(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_lanparm_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_lanparm_t_get_channel" "', argument " "1"" of type '" "ipmi_lanparm_t *""'"); 
    }
    arg1 = (ipmi_lanparm_t *)(argp1);
    result = (int)ipmi_lanparm_t_get_channel(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_lanparm_t_get_parm) {
  {
    ipmi_lanparm_t *arg1 = 0 ;
    int arg2 ;
    int arg3 ;
    int arg4 ;
    swig_cb *arg5 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    int val4 ;
    int ecode4 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 5) || (items > 5)) {
      SWIG_croak("Usage: ipmi_lanparm_t_get_parm(self,parm,set,block,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_lanparm_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_lanparm_t_get_parm" "', argument " "1"" of type '" "ipmi_lanparm_t *""'"); 
    }
    arg1 = (ipmi_lanparm_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_lanparm_t_get_parm" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    ecode3 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(2), &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ipmi_lanparm_t_get_parm" "', argument " "3"" of type '" "int""'");
    } 
    arg3 = (int)(val3);
    ecode4 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(3), &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "ipmi_lanparm_t_get_parm" "', argument " "4"" of type '" "int""'");
    } 
    arg4 = (int)(val4);
    {
      if (!SvROK(ST(4)))
      croak("Argument 5 is not a reference.");
      arg5 = ST(4);
    }
    result = (int)ipmi_lanparm_t_get_parm(arg1,arg2,arg3,arg4,arg5);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_lanparm_t_set_parm) {
  {
    ipmi_lanparm_t *arg1 = 0 ;
    int arg2 ;
    char *arg3 = 0 ;
    swig_cb *arg4 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int res3 ;
    char *buf3 = 0 ;
    int alloc3 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 3) || (items > 4)) {
      SWIG_croak("Usage: ipmi_lanparm_t_set_parm(self,parm,value,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_lanparm_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_lanparm_t_set_parm" "', argument " "1"" of type '" "ipmi_lanparm_t *""'"); 
    }
    arg1 = (ipmi_lanparm_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_lanparm_t_set_parm" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    res3 = SWIG_AsCharPtrAndSize(ST(2), &buf3, NULL, &alloc3);
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "ipmi_lanparm_t_set_parm" "', argument " "3"" of type '" "char *""'");
    }
    arg3 = (char *)(buf3);
    if (items > 3) {
      {
        if (!SvROK(ST(3)))
        croak("Argument 4 is not a reference.");
        arg4 = ST(3);
      }
    }
    result = (int)ipmi_lanparm_t_set_parm(arg1,arg2,arg3,arg4);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    if (alloc3 == SWIG_NEWOBJ) free((char*)buf3);
    
    XSRETURN(argvi);
    fail:;
    
    
    if (alloc3 == SWIG_NEWOBJ) free((char*)buf3);
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_lanparm_t_set_parm_array) {
  {
    ipmi_lanparm_t *arg1 = 0 ;
    int arg2 ;
    intarray arg3 ;
    swig_cb *arg4 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    {
      (&arg3)->val = NULL;
    }
    if ((items < 3) || (items > 4)) {
      SWIG_croak("Usage: ipmi_lanparm_t_set_parm_array(self,parm,value,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_lanparm_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_lanparm_t_set_parm_array" "', argument " "1"" of type '" "ipmi_lanparm_t *""'"); 
    }
    arg1 = (ipmi_lanparm_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_lanparm_t_set_parm_array" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    {
      AV *tempav;
      I32 len;
      int i;
      SV  **tv;
      if (!SvROK(ST(2)))
      croak("Argument 3 is not a reference.");
      if (SvTYPE(SvRV(ST(2))) != SVt_PVAV)
      croak("Argument 3 is not an array.");
      tempav = (AV*)SvRV(ST(2));
      len = av_len(tempav);
      (&arg3)->val = (int *) malloc((len+2)*sizeof(int));
      (&arg3)->len = len + 1;
      
      for (i = 0; i <= len; i++) {
        tv = av_fetch(tempav, i, 0);
        (&arg3)->val[i] = SvIV(*tv);
      }
    }
    if (items > 3) {
      {
        if (!SvROK(ST(3)))
        croak("Argument 4 is not a reference.");
        arg4 = ST(3);
      }
    }
    result = (int)ipmi_lanparm_t_set_parm_array(arg1,arg2,arg3,arg4);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    {
      if ((&arg3)->val)
      free((&arg3)->val);
    }
    
    XSRETURN(argvi);
    fail:;
    
    
    {
      if ((&arg3)->val)
      free((&arg3)->val);
    }
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_lanparm_t_get_config) {
  {
    ipmi_lanparm_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_lanparm_t_get_config(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_lanparm_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_lanparm_t_get_config" "', argument " "1"" of type '" "ipmi_lanparm_t *""'"); 
    }
    arg1 = (ipmi_lanparm_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_lanparm_t_get_config(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_lanparm_t_set_config) {
  {
    ipmi_lanparm_t *arg1 = 0 ;
    ipmi_lan_config_t *arg2 = 0 ;
    swig_cb *arg3 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 3)) {
      SWIG_croak("Usage: ipmi_lanparm_t_set_config(self,config,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_lanparm_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_lanparm_t_set_config" "', argument " "1"" of type '" "ipmi_lanparm_t *""'"); 
    }
    arg1 = (ipmi_lanparm_t *)(argp1);
    res2 = SWIG_ConvertPtr(ST(1), &argp2,SWIGTYPE_p_ipmi_lan_config_t, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ipmi_lanparm_t_set_config" "', argument " "2"" of type '" "ipmi_lan_config_t *""'"); 
    }
    arg2 = (ipmi_lan_config_t *)(argp2);
    if (items > 2) {
      {
        if (!SvROK(ST(2)))
        croak("Argument 3 is not a reference.");
        arg3 = ST(2);
      }
    }
    result = (int)ipmi_lanparm_t_set_config(arg1,arg2,arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_lanparm_t_clear_lock) {
  {
    ipmi_lanparm_t *arg1 = 0 ;
    ipmi_lan_config_t *arg2 = NULL ;
    swig_cb *arg3 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 3)) {
      SWIG_croak("Usage: ipmi_lanparm_t_clear_lock(self,config,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_lanparm_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_lanparm_t_clear_lock" "', argument " "1"" of type '" "ipmi_lanparm_t *""'"); 
    }
    arg1 = (ipmi_lanparm_t *)(argp1);
    if (items > 1) {
      res2 = SWIG_ConvertPtr(ST(1), &argp2,SWIGTYPE_p_ipmi_lan_config_t, 0 |  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ipmi_lanparm_t_clear_lock" "', argument " "2"" of type '" "ipmi_lan_config_t *""'"); 
      }
      arg2 = (ipmi_lan_config_t *)(argp2);
    }
    if (items > 2) {
      {
        if (!SvROK(ST(2)))
        croak("Argument 3 is not a reference.");
        arg3 = ST(2);
      }
    }
    result = (int)ipmi_lanparm_t_clear_lock(arg1,arg2,arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_delete_ipmi_lan_config_t) {
  {
    ipmi_lan_config_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: delete_ipmi_lan_config_t(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_lan_config_t, SWIG_POINTER_DISOWN |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_ipmi_lan_config_t" "', argument " "1"" of type '" "ipmi_lan_config_t *""'"); 
    }
    arg1 = (ipmi_lan_config_t *)(argp1);
    delete_ipmi_lan_config_t(arg1);
    ST(argvi) = &PL_sv_undef;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_lan_config_t_get_val) {
  {
    ipmi_lan_config_t *arg1 = 0 ;
    int arg2 ;
    int *arg3 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int ivalue3 ;
    int argvi = 0;
    SV * _saved[1] ;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
      SWIG_croak("Usage: ipmi_lan_config_t_get_val(self,parm,index);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_lan_config_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_lan_config_t_get_val" "', argument " "1"" of type '" "ipmi_lan_config_t *""'"); 
    }
    arg1 = (ipmi_lan_config_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_lan_config_t_get_val" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    {
      SV* tempsv;
      if (!SvROK(ST(2))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(2));
      if (!SvIOK(tempsv)) {
        ivalue3 = 0;
      } else {
        ivalue3 = SvIV(tempsv);
      }
      arg3 = &ivalue3;
    }
    _saved[0] = ST(2);
    result = (char *)ipmi_lan_config_t_get_val(arg1,arg2,arg3);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setiv(tempsv, *arg3);
    }
    
    
    
    free((char*)result);
    XSRETURN(argvi);
    fail:;
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_lan_config_t_set_val) {
  {
    ipmi_lan_config_t *arg1 = 0 ;
    int arg2 ;
    int arg3 ;
    char *arg4 = 0 ;
    char *arg5 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    int res4 ;
    char *buf4 = 0 ;
    int alloc4 = 0 ;
    int res5 ;
    char *buf5 = 0 ;
    int alloc5 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 5) || (items > 5)) {
      SWIG_croak("Usage: ipmi_lan_config_t_set_val(self,parm,idx,type,value);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_lan_config_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_lan_config_t_set_val" "', argument " "1"" of type '" "ipmi_lan_config_t *""'"); 
    }
    arg1 = (ipmi_lan_config_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_lan_config_t_set_val" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    ecode3 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(2), &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ipmi_lan_config_t_set_val" "', argument " "3"" of type '" "int""'");
    } 
    arg3 = (int)(val3);
    res4 = SWIG_AsCharPtrAndSize(ST(3), &buf4, NULL, &alloc4);
    if (!SWIG_IsOK(res4)) {
      SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "ipmi_lan_config_t_set_val" "', argument " "4"" of type '" "char *""'");
    }
    arg4 = (char *)(buf4);
    res5 = SWIG_AsCharPtrAndSize(ST(4), &buf5, NULL, &alloc5);
    if (!SWIG_IsOK(res5)) {
      SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "ipmi_lan_config_t_set_val" "', argument " "5"" of type '" "char *""'");
    }
    arg5 = (char *)(buf5);
    result = (int)ipmi_lan_config_t_set_val(arg1,arg2,arg3,arg4,arg5);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    
    if (alloc4 == SWIG_NEWOBJ) free((char*)buf4);
    if (alloc5 == SWIG_NEWOBJ) free((char*)buf5);
    XSRETURN(argvi);
    fail:;
    
    
    
    if (alloc4 == SWIG_NEWOBJ) free((char*)buf4);
    if (alloc5 == SWIG_NEWOBJ) free((char*)buf5);
  }
  SWIG_croak_null();
}


XS(_wrap_delete_ipmi_pef_t) {
  {
    ipmi_pef_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: delete_ipmi_pef_t(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_pef_t, SWIG_POINTER_DISOWN |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_ipmi_pef_t" "', argument " "1"" of type '" "ipmi_pef_t *""'"); 
    }
    arg1 = (ipmi_pef_t *)(argp1);
    delete_ipmi_pef_t(arg1);
    ST(argvi) = &PL_sv_undef;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_pef_t_get_mc_id) {
  {
    ipmi_pef_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    ipmi_mcid_t *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_pef_t_get_mc_id(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_pef_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_pef_t_get_mc_id" "', argument " "1"" of type '" "ipmi_pef_t *""'"); 
    }
    arg1 = (ipmi_pef_t *)(argp1);
    result = (ipmi_mcid_t *)ipmi_pef_t_get_mc_id(arg1);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ipmi_mcid_t, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_pef_t_get_parm) {
  {
    ipmi_pef_t *arg1 = 0 ;
    int arg2 ;
    int arg3 ;
    int arg4 ;
    swig_cb *arg5 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    int val4 ;
    int ecode4 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 5) || (items > 5)) {
      SWIG_croak("Usage: ipmi_pef_t_get_parm(self,parm,set,block,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_pef_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_pef_t_get_parm" "', argument " "1"" of type '" "ipmi_pef_t *""'"); 
    }
    arg1 = (ipmi_pef_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_pef_t_get_parm" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    ecode3 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(2), &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ipmi_pef_t_get_parm" "', argument " "3"" of type '" "int""'");
    } 
    arg3 = (int)(val3);
    ecode4 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(3), &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "ipmi_pef_t_get_parm" "', argument " "4"" of type '" "int""'");
    } 
    arg4 = (int)(val4);
    {
      if (!SvROK(ST(4)))
      croak("Argument 5 is not a reference.");
      arg5 = ST(4);
    }
    result = (int)ipmi_pef_t_get_parm(arg1,arg2,arg3,arg4,arg5);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_pef_t_set_parm) {
  {
    ipmi_pef_t *arg1 = 0 ;
    int arg2 ;
    char *arg3 = 0 ;
    swig_cb *arg4 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int res3 ;
    char *buf3 = 0 ;
    int alloc3 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 3) || (items > 4)) {
      SWIG_croak("Usage: ipmi_pef_t_set_parm(self,parm,value,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_pef_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_pef_t_set_parm" "', argument " "1"" of type '" "ipmi_pef_t *""'"); 
    }
    arg1 = (ipmi_pef_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_pef_t_set_parm" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    res3 = SWIG_AsCharPtrAndSize(ST(2), &buf3, NULL, &alloc3);
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "ipmi_pef_t_set_parm" "', argument " "3"" of type '" "char *""'");
    }
    arg3 = (char *)(buf3);
    if (items > 3) {
      {
        if (!SvROK(ST(3)))
        croak("Argument 4 is not a reference.");
        arg4 = ST(3);
      }
    }
    result = (int)ipmi_pef_t_set_parm(arg1,arg2,arg3,arg4);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    if (alloc3 == SWIG_NEWOBJ) free((char*)buf3);
    
    XSRETURN(argvi);
    fail:;
    
    
    if (alloc3 == SWIG_NEWOBJ) free((char*)buf3);
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_pef_t_set_parm_array) {
  {
    ipmi_pef_t *arg1 = 0 ;
    int arg2 ;
    intarray arg3 ;
    swig_cb *arg4 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    {
      (&arg3)->val = NULL;
    }
    if ((items < 3) || (items > 4)) {
      SWIG_croak("Usage: ipmi_pef_t_set_parm_array(self,parm,value,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_pef_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_pef_t_set_parm_array" "', argument " "1"" of type '" "ipmi_pef_t *""'"); 
    }
    arg1 = (ipmi_pef_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_pef_t_set_parm_array" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    {
      AV *tempav;
      I32 len;
      int i;
      SV  **tv;
      if (!SvROK(ST(2)))
      croak("Argument 3 is not a reference.");
      if (SvTYPE(SvRV(ST(2))) != SVt_PVAV)
      croak("Argument 3 is not an array.");
      tempav = (AV*)SvRV(ST(2));
      len = av_len(tempav);
      (&arg3)->val = (int *) malloc((len+2)*sizeof(int));
      (&arg3)->len = len + 1;
      
      for (i = 0; i <= len; i++) {
        tv = av_fetch(tempav, i, 0);
        (&arg3)->val[i] = SvIV(*tv);
      }
    }
    if (items > 3) {
      {
        if (!SvROK(ST(3)))
        croak("Argument 4 is not a reference.");
        arg4 = ST(3);
      }
    }
    result = (int)ipmi_pef_t_set_parm_array(arg1,arg2,arg3,arg4);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    {
      if ((&arg3)->val)
      free((&arg3)->val);
    }
    
    XSRETURN(argvi);
    fail:;
    
    
    {
      if ((&arg3)->val)
      free((&arg3)->val);
    }
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_pef_t_get_config) {
  {
    ipmi_pef_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_pef_t_get_config(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_pef_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_pef_t_get_config" "', argument " "1"" of type '" "ipmi_pef_t *""'"); 
    }
    arg1 = (ipmi_pef_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_pef_t_get_config(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_pef_t_set_config) {
  {
    ipmi_pef_t *arg1 = 0 ;
    ipmi_pef_config_t *arg2 = 0 ;
    swig_cb *arg3 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 3)) {
      SWIG_croak("Usage: ipmi_pef_t_set_config(self,config,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_pef_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_pef_t_set_config" "', argument " "1"" of type '" "ipmi_pef_t *""'"); 
    }
    arg1 = (ipmi_pef_t *)(argp1);
    res2 = SWIG_ConvertPtr(ST(1), &argp2,SWIGTYPE_p_ipmi_pef_config_t, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ipmi_pef_t_set_config" "', argument " "2"" of type '" "ipmi_pef_config_t *""'"); 
    }
    arg2 = (ipmi_pef_config_t *)(argp2);
    if (items > 2) {
      {
        if (!SvROK(ST(2)))
        croak("Argument 3 is not a reference.");
        arg3 = ST(2);
      }
    }
    result = (int)ipmi_pef_t_set_config(arg1,arg2,arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_pef_t_clear_lock) {
  {
    ipmi_pef_t *arg1 = 0 ;
    ipmi_pef_config_t *arg2 = NULL ;
    swig_cb *arg3 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 3)) {
      SWIG_croak("Usage: ipmi_pef_t_clear_lock(self,config,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_pef_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_pef_t_clear_lock" "', argument " "1"" of type '" "ipmi_pef_t *""'"); 
    }
    arg1 = (ipmi_pef_t *)(argp1);
    if (items > 1) {
      res2 = SWIG_ConvertPtr(ST(1), &argp2,SWIGTYPE_p_ipmi_pef_config_t, 0 |  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ipmi_pef_t_clear_lock" "', argument " "2"" of type '" "ipmi_pef_config_t *""'"); 
      }
      arg2 = (ipmi_pef_config_t *)(argp2);
    }
    if (items > 2) {
      {
        if (!SvROK(ST(2)))
        croak("Argument 3 is not a reference.");
        arg3 = ST(2);
      }
    }
    result = (int)ipmi_pef_t_clear_lock(arg1,arg2,arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_delete_ipmi_pef_config_t) {
  {
    ipmi_pef_config_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: delete_ipmi_pef_config_t(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_pef_config_t, SWIG_POINTER_DISOWN |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_ipmi_pef_config_t" "', argument " "1"" of type '" "ipmi_pef_config_t *""'"); 
    }
    arg1 = (ipmi_pef_config_t *)(argp1);
    delete_ipmi_pef_config_t(arg1);
    ST(argvi) = &PL_sv_undef;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_pef_config_t_get_val) {
  {
    ipmi_pef_config_t *arg1 = 0 ;
    int arg2 ;
    int *arg3 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int ivalue3 ;
    int argvi = 0;
    SV * _saved[1] ;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
      SWIG_croak("Usage: ipmi_pef_config_t_get_val(self,parm,index);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_pef_config_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_pef_config_t_get_val" "', argument " "1"" of type '" "ipmi_pef_config_t *""'"); 
    }
    arg1 = (ipmi_pef_config_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_pef_config_t_get_val" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    {
      SV* tempsv;
      if (!SvROK(ST(2))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(2));
      if (!SvIOK(tempsv)) {
        ivalue3 = 0;
      } else {
        ivalue3 = SvIV(tempsv);
      }
      arg3 = &ivalue3;
    }
    _saved[0] = ST(2);
    result = (char *)ipmi_pef_config_t_get_val(arg1,arg2,arg3);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setiv(tempsv, *arg3);
    }
    
    
    
    free((char*)result);
    XSRETURN(argvi);
    fail:;
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_pef_config_t_set_val) {
  {
    ipmi_pef_config_t *arg1 = 0 ;
    int arg2 ;
    int arg3 ;
    char *arg4 = 0 ;
    char *arg5 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    int res4 ;
    char *buf4 = 0 ;
    int alloc4 = 0 ;
    int res5 ;
    char *buf5 = 0 ;
    int alloc5 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 5) || (items > 5)) {
      SWIG_croak("Usage: ipmi_pef_config_t_set_val(self,parm,idx,type,value);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_pef_config_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_pef_config_t_set_val" "', argument " "1"" of type '" "ipmi_pef_config_t *""'"); 
    }
    arg1 = (ipmi_pef_config_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_pef_config_t_set_val" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    ecode3 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(2), &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ipmi_pef_config_t_set_val" "', argument " "3"" of type '" "int""'");
    } 
    arg3 = (int)(val3);
    res4 = SWIG_AsCharPtrAndSize(ST(3), &buf4, NULL, &alloc4);
    if (!SWIG_IsOK(res4)) {
      SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "ipmi_pef_config_t_set_val" "', argument " "4"" of type '" "char *""'");
    }
    arg4 = (char *)(buf4);
    res5 = SWIG_AsCharPtrAndSize(ST(4), &buf5, NULL, &alloc5);
    if (!SWIG_IsOK(res5)) {
      SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "ipmi_pef_config_t_set_val" "', argument " "5"" of type '" "char *""'");
    }
    arg5 = (char *)(buf5);
    result = (int)ipmi_pef_config_t_set_val(arg1,arg2,arg3,arg4,arg5);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    
    if (alloc4 == SWIG_NEWOBJ) free((char*)buf4);
    if (alloc5 == SWIG_NEWOBJ) free((char*)buf5);
    XSRETURN(argvi);
    fail:;
    
    
    
    if (alloc4 == SWIG_NEWOBJ) free((char*)buf4);
    if (alloc5 == SWIG_NEWOBJ) free((char*)buf5);
  }
  SWIG_croak_null();
}


XS(_wrap_delete_ipmi_pet_t) {
  {
    ipmi_pet_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: delete_ipmi_pet_t(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_pet_t, SWIG_POINTER_DISOWN |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_ipmi_pet_t" "', argument " "1"" of type '" "ipmi_pet_t *""'"); 
    }
    arg1 = (ipmi_pet_t *)(argp1);
    delete_ipmi_pet_t(arg1);
    ST(argvi) = &PL_sv_undef;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_pet_t_get_mc_id) {
  {
    ipmi_pet_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    ipmi_mcid_t *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_pet_t_get_mc_id(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_pet_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_pet_t_get_mc_id" "', argument " "1"" of type '" "ipmi_pet_t *""'"); 
    }
    arg1 = (ipmi_pet_t *)(argp1);
    result = (ipmi_mcid_t *)ipmi_pet_t_get_mc_id(arg1);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ipmi_mcid_t, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_pet_t_get_channel) {
  {
    ipmi_pet_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_pet_t_get_channel(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_pet_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_pet_t_get_channel" "', argument " "1"" of type '" "ipmi_pet_t *""'"); 
    }
    arg1 = (ipmi_pet_t *)(argp1);
    result = (int)ipmi_pet_t_get_channel(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_pet_t_get_ip_addr) {
  {
    ipmi_pet_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_pet_t_get_ip_addr(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_pet_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_pet_t_get_ip_addr" "', argument " "1"" of type '" "ipmi_pet_t *""'"); 
    }
    arg1 = (ipmi_pet_t *)(argp1);
    result = (char *)ipmi_pet_t_get_ip_addr(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    free((char*)result);
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_pet_t_get_mac_addr) {
  {
    ipmi_pet_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_pet_t_get_mac_addr(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_pet_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_pet_t_get_mac_addr" "', argument " "1"" of type '" "ipmi_pet_t *""'"); 
    }
    arg1 = (ipmi_pet_t *)(argp1);
    result = (char *)ipmi_pet_t_get_mac_addr(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    free((char*)result);
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_pet_t_get_eft_sel) {
  {
    ipmi_pet_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_pet_t_get_eft_sel(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_pet_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_pet_t_get_eft_sel" "', argument " "1"" of type '" "ipmi_pet_t *""'"); 
    }
    arg1 = (ipmi_pet_t *)(argp1);
    result = (int)ipmi_pet_t_get_eft_sel(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_pet_t_get_policy_num) {
  {
    ipmi_pet_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_pet_t_get_policy_num(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_pet_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_pet_t_get_policy_num" "', argument " "1"" of type '" "ipmi_pet_t *""'"); 
    }
    arg1 = (ipmi_pet_t *)(argp1);
    result = (int)ipmi_pet_t_get_policy_num(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_pet_t_get_apt_sel) {
  {
    ipmi_pet_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_pet_t_get_apt_sel(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_pet_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_pet_t_get_apt_sel" "', argument " "1"" of type '" "ipmi_pet_t *""'"); 
    }
    arg1 = (ipmi_pet_t *)(argp1);
    result = (int)ipmi_pet_t_get_apt_sel(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_pet_t_get_lan_dest_sel) {
  {
    ipmi_pet_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_pet_t_get_lan_dest_sel(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_pet_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_pet_t_get_lan_dest_sel" "', argument " "1"" of type '" "ipmi_pet_t *""'"); 
    }
    arg1 = (ipmi_pet_t *)(argp1);
    result = (int)ipmi_pet_t_get_lan_dest_sel(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_delete_ipmi_cmdlang_t) {
  {
    ipmi_cmdlang_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: delete_ipmi_cmdlang_t(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_cmdlang_t, SWIG_POINTER_DISOWN |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_ipmi_cmdlang_t" "', argument " "1"" of type '" "ipmi_cmdlang_t *""'"); 
    }
    arg1 = (ipmi_cmdlang_t *)(argp1);
    delete_ipmi_cmdlang_t(arg1);
    ST(argvi) = &PL_sv_undef;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_cmdlang_t_handle) {
  {
    ipmi_cmdlang_t *arg1 = 0 ;
    char *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 ;
    char *buf2 = 0 ;
    int alloc2 = 0 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_cmdlang_t_handle(self,icmd);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_cmdlang_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_cmdlang_t_handle" "', argument " "1"" of type '" "ipmi_cmdlang_t *""'"); 
    }
    arg1 = (ipmi_cmdlang_t *)(argp1);
    res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2);
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ipmi_cmdlang_t_handle" "', argument " "2"" of type '" "char const *""'");
    }
    arg2 = (char *)(buf2);
    ipmi_cmdlang_t_handle(arg1,(char const *)arg2);
    ST(argvi) = &PL_sv_undef;
    
    if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
    XSRETURN(argvi);
    fail:;
    
    if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_cmdlang_t_is_help) {
  {
    ipmi_cmdlang_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_cmdlang_t_is_help(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_cmdlang_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_cmdlang_t_is_help" "', argument " "1"" of type '" "ipmi_cmdlang_t *""'"); 
    }
    arg1 = (ipmi_cmdlang_t *)(argp1);
    result = (int)ipmi_cmdlang_t_is_help(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_cmdlang_t_get_err) {
  {
    ipmi_cmdlang_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_cmdlang_t_get_err(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_cmdlang_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_cmdlang_t_get_err" "', argument " "1"" of type '" "ipmi_cmdlang_t *""'"); 
    }
    arg1 = (ipmi_cmdlang_t *)(argp1);
    result = (int)ipmi_cmdlang_t_get_err(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_cmdlang_t_get_errstr) {
  {
    ipmi_cmdlang_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_cmdlang_t_get_errstr(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_cmdlang_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_cmdlang_t_get_errstr" "', argument " "1"" of type '" "ipmi_cmdlang_t *""'"); 
    }
    arg1 = (ipmi_cmdlang_t *)(argp1);
    result = (char *)ipmi_cmdlang_t_get_errstr(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    free((char*)result);
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_cmdlang_t_get_objstr) {
  {
    ipmi_cmdlang_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_cmdlang_t_get_objstr(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_cmdlang_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_cmdlang_t_get_objstr" "', argument " "1"" of type '" "ipmi_cmdlang_t *""'"); 
    }
    arg1 = (ipmi_cmdlang_t *)(argp1);
    result = (char *)ipmi_cmdlang_t_get_objstr(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    free((char*)result);
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_cmdlang_t_get_location) {
  {
    ipmi_cmdlang_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_cmdlang_t_get_location(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_cmdlang_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_cmdlang_t_get_location" "', argument " "1"" of type '" "ipmi_cmdlang_t *""'"); 
    }
    arg1 = (ipmi_cmdlang_t *)(argp1);
    result = (char *)ipmi_cmdlang_t_get_location(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    free((char*)result);
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_delete_ipmi_cmdlang_event_t) {
  {
    ipmi_cmdlang_event_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: delete_ipmi_cmdlang_event_t(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_cmdlang_event_t, SWIG_POINTER_DISOWN |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_ipmi_cmdlang_event_t" "', argument " "1"" of type '" "ipmi_cmdlang_event_t *""'"); 
    }
    arg1 = (ipmi_cmdlang_event_t *)(argp1);
    delete_ipmi_cmdlang_event_t(arg1);
    ST(argvi) = &PL_sv_undef;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_cmdlang_event_t_restart) {
  {
    ipmi_cmdlang_event_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_cmdlang_event_t_restart(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_cmdlang_event_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_cmdlang_event_t_restart" "', argument " "1"" of type '" "ipmi_cmdlang_event_t *""'"); 
    }
    arg1 = (ipmi_cmdlang_event_t *)(argp1);
    ipmi_cmdlang_event_t_restart(arg1);
    ST(argvi) = &PL_sv_undef;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_cmdlang_event_t_next_field) {
  {
    ipmi_cmdlang_event_t *arg1 = 0 ;
    unsigned int *arg2 = 0 ;
    char **arg3 = 0 ;
    char **arg4 = 0 ;
    char **arg5 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int ivalue2 ;
    char *svalue3 ;
    char *svalue4 ;
    char *svalue5 ;
    int argvi = 0;
    SV * _saved[4] ;
    int result;
    dXSARGS;
    
    if ((items < 5) || (items > 5)) {
      SWIG_croak("Usage: ipmi_cmdlang_event_t_next_field(self,level,type,name,value);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_cmdlang_event_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_cmdlang_event_t_next_field" "', argument " "1"" of type '" "ipmi_cmdlang_event_t *""'"); 
    }
    arg1 = (ipmi_cmdlang_event_t *)(argp1);
    {
      SV* tempsv;
      if (!SvROK(ST(1))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(1));
      if (!SvIOK(tempsv)) {
        ivalue2 = 0;
      } else {
        ivalue2 = SvIV(tempsv);
      }
      arg2 = &ivalue2;
    }
    {
      SV* tempsv;
      if (!SvROK(ST(2))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(2));
      if (!SvOK(tempsv)) {
        svalue3 = NULL;
      } else {
        svalue3 = SvPV_nolen(tempsv);
      }
      arg3 = &svalue3;
    }
    {
      if (!SvROK(ST(3))) {
        croak("expected a reference\n");
      }
      svalue4 = NULL;
      arg4 = &svalue4;
    }
    {
      if (!SvROK(ST(4))) {
        croak("expected a reference\n");
      }
      svalue5 = NULL;
      arg5 = &svalue5;
    }
    _saved[0] = ST(1);
    _saved[1] = ST(2);
    _saved[2] = ST(3);
    _saved[3] = ST(4);
    result = (int)ipmi_cmdlang_event_t_next_field(arg1,arg2,(char const **)arg3,arg4,arg5);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setiv(tempsv, *arg2);
    }
    {
      SV *tempsv;
      tempsv = SvRV(_saved[1]);
      sv_setpv(tempsv, *arg3);
    }
    {
      SV *tempsv;
      tempsv = SvRV(_saved[2]);
      sv_setpv(tempsv, *arg4);
      free(*arg4);
    }
    {
      SV *tempsv;
      tempsv = SvRV(_saved[3]);
      sv_setpv(tempsv, *arg5);
      free(*arg5);
    }
    
    
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_delete_ipmi_sol_conn_t) {
  {
    ipmi_sol_conn_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: delete_ipmi_sol_conn_t(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sol_conn_t, SWIG_POINTER_DISOWN |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_ipmi_sol_conn_t" "', argument " "1"" of type '" "ipmi_sol_conn_t *""'"); 
    }
    arg1 = (ipmi_sol_conn_t *)(argp1);
    delete_ipmi_sol_conn_t(arg1);
    ST(argvi) = &PL_sv_undef;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sol_conn_t_set_ACK_timeout) {
  {
    ipmi_sol_conn_t *arg1 = 0 ;
    int arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_sol_conn_t_set_ACK_timeout(self,timeout_usec);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sol_conn_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sol_conn_t_set_ACK_timeout" "', argument " "1"" of type '" "ipmi_sol_conn_t *""'"); 
    }
    arg1 = (ipmi_sol_conn_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_sol_conn_t_set_ACK_timeout" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    ipmi_sol_conn_t_set_ACK_timeout(arg1,arg2);
    ST(argvi) = &PL_sv_undef;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sol_conn_t_get_ACK_timeout) {
  {
    ipmi_sol_conn_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sol_conn_t_get_ACK_timeout(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sol_conn_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sol_conn_t_get_ACK_timeout" "', argument " "1"" of type '" "ipmi_sol_conn_t *""'"); 
    }
    arg1 = (ipmi_sol_conn_t *)(argp1);
    result = (int)ipmi_sol_conn_t_get_ACK_timeout(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sol_conn_t_set_ACK_retries) {
  {
    ipmi_sol_conn_t *arg1 = 0 ;
    int arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_sol_conn_t_set_ACK_retries(self,retries);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sol_conn_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sol_conn_t_set_ACK_retries" "', argument " "1"" of type '" "ipmi_sol_conn_t *""'"); 
    }
    arg1 = (ipmi_sol_conn_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_sol_conn_t_set_ACK_retries" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    ipmi_sol_conn_t_set_ACK_retries(arg1,arg2);
    ST(argvi) = &PL_sv_undef;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sol_conn_t_get_ACK_retries) {
  {
    ipmi_sol_conn_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sol_conn_t_get_ACK_retries(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sol_conn_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sol_conn_t_get_ACK_retries" "', argument " "1"" of type '" "ipmi_sol_conn_t *""'"); 
    }
    arg1 = (ipmi_sol_conn_t *)(argp1);
    result = (int)ipmi_sol_conn_t_get_ACK_retries(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sol_conn_t_set_use_authentication) {
  {
    ipmi_sol_conn_t *arg1 = 0 ;
    int arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_sol_conn_t_set_use_authentication(self,use_authentication);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sol_conn_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sol_conn_t_set_use_authentication" "', argument " "1"" of type '" "ipmi_sol_conn_t *""'"); 
    }
    arg1 = (ipmi_sol_conn_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_sol_conn_t_set_use_authentication" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    result = (int)ipmi_sol_conn_t_set_use_authentication(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sol_conn_t_get_use_authentication) {
  {
    ipmi_sol_conn_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sol_conn_t_get_use_authentication(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sol_conn_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sol_conn_t_get_use_authentication" "', argument " "1"" of type '" "ipmi_sol_conn_t *""'"); 
    }
    arg1 = (ipmi_sol_conn_t *)(argp1);
    result = (int)ipmi_sol_conn_t_get_use_authentication(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sol_conn_t_set_use_encryption) {
  {
    ipmi_sol_conn_t *arg1 = 0 ;
    int arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_sol_conn_t_set_use_encryption(self,use_encryption);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sol_conn_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sol_conn_t_set_use_encryption" "', argument " "1"" of type '" "ipmi_sol_conn_t *""'"); 
    }
    arg1 = (ipmi_sol_conn_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_sol_conn_t_set_use_encryption" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    result = (int)ipmi_sol_conn_t_set_use_encryption(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sol_conn_t_get_use_encryption) {
  {
    ipmi_sol_conn_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sol_conn_t_get_use_encryption(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sol_conn_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sol_conn_t_get_use_encryption" "', argument " "1"" of type '" "ipmi_sol_conn_t *""'"); 
    }
    arg1 = (ipmi_sol_conn_t *)(argp1);
    result = (int)ipmi_sol_conn_t_get_use_encryption(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sol_conn_t_set_shared_serial_alert_behavior) {
  {
    ipmi_sol_conn_t *arg1 = 0 ;
    int arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_sol_conn_t_set_shared_serial_alert_behavior(self,behavior);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sol_conn_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sol_conn_t_set_shared_serial_alert_behavior" "', argument " "1"" of type '" "ipmi_sol_conn_t *""'"); 
    }
    arg1 = (ipmi_sol_conn_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_sol_conn_t_set_shared_serial_alert_behavior" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    result = (int)ipmi_sol_conn_t_set_shared_serial_alert_behavior(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sol_conn_t_get_shared_serial_alert_behavior) {
  {
    ipmi_sol_conn_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sol_conn_t_get_shared_serial_alert_behavior(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sol_conn_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sol_conn_t_get_shared_serial_alert_behavior" "', argument " "1"" of type '" "ipmi_sol_conn_t *""'"); 
    }
    arg1 = (ipmi_sol_conn_t *)(argp1);
    result = (int)ipmi_sol_conn_t_get_shared_serial_alert_behavior(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sol_conn_t_set_deassert_CTS_DCD_DSR_on_connect) {
  {
    ipmi_sol_conn_t *arg1 = 0 ;
    int arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_sol_conn_t_set_deassert_CTS_DCD_DSR_on_connect(self,assert);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sol_conn_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sol_conn_t_set_deassert_CTS_DCD_DSR_on_connect" "', argument " "1"" of type '" "ipmi_sol_conn_t *""'"); 
    }
    arg1 = (ipmi_sol_conn_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_sol_conn_t_set_deassert_CTS_DCD_DSR_on_connect" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    result = (int)ipmi_sol_conn_t_set_deassert_CTS_DCD_DSR_on_connect(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sol_conn_t_get_deassert_CTS_DCD_DSR_on_connect) {
  {
    ipmi_sol_conn_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sol_conn_t_get_deassert_CTS_DCD_DSR_on_connect(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sol_conn_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sol_conn_t_get_deassert_CTS_DCD_DSR_on_connect" "', argument " "1"" of type '" "ipmi_sol_conn_t *""'"); 
    }
    arg1 = (ipmi_sol_conn_t *)(argp1);
    result = (int)ipmi_sol_conn_t_get_deassert_CTS_DCD_DSR_on_connect(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sol_conn_t_set_bit_rate) {
  {
    ipmi_sol_conn_t *arg1 = 0 ;
    unsigned int arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_sol_conn_t_set_bit_rate(self,rate);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sol_conn_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sol_conn_t_set_bit_rate" "', argument " "1"" of type '" "ipmi_sol_conn_t *""'"); 
    }
    arg1 = (ipmi_sol_conn_t *)(argp1);
    ecode2 = SWIG_AsVal_unsigned_SS_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_sol_conn_t_set_bit_rate" "', argument " "2"" of type '" "unsigned int""'");
    } 
    arg2 = (unsigned int)(val2);
    result = (int)ipmi_sol_conn_t_set_bit_rate(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sol_conn_t_get_bit_rate) {
  {
    ipmi_sol_conn_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    unsigned int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sol_conn_t_get_bit_rate(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sol_conn_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sol_conn_t_get_bit_rate" "', argument " "1"" of type '" "ipmi_sol_conn_t *""'"); 
    }
    arg1 = (ipmi_sol_conn_t *)(argp1);
    result = (unsigned int)ipmi_sol_conn_t_get_bit_rate(arg1);
    ST(argvi) = SWIG_From_unsigned_SS_int  SWIG_PERL_CALL_ARGS_1((unsigned int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sol_conn_t_open) {
  {
    ipmi_sol_conn_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sol_conn_t_open(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sol_conn_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sol_conn_t_open" "', argument " "1"" of type '" "ipmi_sol_conn_t *""'"); 
    }
    arg1 = (ipmi_sol_conn_t *)(argp1);
    result = (int)ipmi_sol_conn_t_open(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sol_conn_t_close) {
  {
    ipmi_sol_conn_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sol_conn_t_close(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sol_conn_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sol_conn_t_close" "', argument " "1"" of type '" "ipmi_sol_conn_t *""'"); 
    }
    arg1 = (ipmi_sol_conn_t *)(argp1);
    result = (int)ipmi_sol_conn_t_close(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sol_conn_t_force_close) {
  {
    ipmi_sol_conn_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sol_conn_t_force_close(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sol_conn_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sol_conn_t_force_close" "', argument " "1"" of type '" "ipmi_sol_conn_t *""'"); 
    }
    arg1 = (ipmi_sol_conn_t *)(argp1);
    result = (int)ipmi_sol_conn_t_force_close(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sol_conn_t_write) {
  {
    ipmi_sol_conn_t *arg1 = 0 ;
    charbuf arg2 ;
    swig_cb *arg3 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 3)) {
      SWIG_croak("Usage: ipmi_sol_conn_t_write(self,buf,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sol_conn_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sol_conn_t_write" "', argument " "1"" of type '" "ipmi_sol_conn_t *""'"); 
    }
    arg1 = (ipmi_sol_conn_t *)(argp1);
    {
      SV* tempsv;
      if (!SvROK(ST(1))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(1));
      if (!SvOK(tempsv)) {
        (&arg2)->val = NULL;
        (&arg2)->len = 0;
      } else {
        STRLEN len;
        (&arg2)->val = SvPV(tempsv, len);
        (&arg2)->len = len;
      }
    }
    if (items > 2) {
      {
        if (!SvROK(ST(2)))
        croak("Argument 3 is not a reference.");
        arg3 = ST(2);
      }
    }
    result = (int)ipmi_sol_conn_t_write(arg1,arg2,arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sol_conn_t_release_nack) {
  {
    ipmi_sol_conn_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_sol_conn_t_release_nack(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sol_conn_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sol_conn_t_release_nack" "', argument " "1"" of type '" "ipmi_sol_conn_t *""'"); 
    }
    arg1 = (ipmi_sol_conn_t *)(argp1);
    result = (int)ipmi_sol_conn_t_release_nack(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sol_conn_t_send_break) {
  {
    ipmi_sol_conn_t *arg1 = 0 ;
    swig_cb *arg2 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 2)) {
      SWIG_croak("Usage: ipmi_sol_conn_t_send_break(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sol_conn_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sol_conn_t_send_break" "', argument " "1"" of type '" "ipmi_sol_conn_t *""'"); 
    }
    arg1 = (ipmi_sol_conn_t *)(argp1);
    if (items > 1) {
      {
        if (!SvROK(ST(1)))
        croak("Argument 2 is not a reference.");
        arg2 = ST(1);
      }
    }
    result = (int)ipmi_sol_conn_t_send_break(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sol_conn_t_set_CTS_assertable) {
  {
    ipmi_sol_conn_t *arg1 = 0 ;
    int arg2 ;
    swig_cb *arg3 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 3)) {
      SWIG_croak("Usage: ipmi_sol_conn_t_set_CTS_assertable(self,asserted,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sol_conn_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sol_conn_t_set_CTS_assertable" "', argument " "1"" of type '" "ipmi_sol_conn_t *""'"); 
    }
    arg1 = (ipmi_sol_conn_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_sol_conn_t_set_CTS_assertable" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    if (items > 2) {
      {
        if (!SvROK(ST(2)))
        croak("Argument 3 is not a reference.");
        arg3 = ST(2);
      }
    }
    result = (int)ipmi_sol_conn_t_set_CTS_assertable(arg1,arg2,arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sol_conn_t_set_DCD_DSR_asserted) {
  {
    ipmi_sol_conn_t *arg1 = 0 ;
    int arg2 ;
    swig_cb *arg3 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 3)) {
      SWIG_croak("Usage: ipmi_sol_conn_t_set_DCD_DSR_asserted(self,asserted,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sol_conn_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sol_conn_t_set_DCD_DSR_asserted" "', argument " "1"" of type '" "ipmi_sol_conn_t *""'"); 
    }
    arg1 = (ipmi_sol_conn_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_sol_conn_t_set_DCD_DSR_asserted" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    if (items > 2) {
      {
        if (!SvROK(ST(2)))
        croak("Argument 3 is not a reference.");
        arg3 = ST(2);
      }
    }
    result = (int)ipmi_sol_conn_t_set_DCD_DSR_asserted(arg1,arg2,arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sol_conn_t_set_RI_asserted) {
  {
    ipmi_sol_conn_t *arg1 = 0 ;
    int arg2 ;
    swig_cb *arg3 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 3)) {
      SWIG_croak("Usage: ipmi_sol_conn_t_set_RI_asserted(self,asserted,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sol_conn_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sol_conn_t_set_RI_asserted" "', argument " "1"" of type '" "ipmi_sol_conn_t *""'"); 
    }
    arg1 = (ipmi_sol_conn_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_sol_conn_t_set_RI_asserted" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    if (items > 2) {
      {
        if (!SvROK(ST(2)))
        croak("Argument 3 is not a reference.");
        arg3 = ST(2);
      }
    }
    result = (int)ipmi_sol_conn_t_set_RI_asserted(arg1,arg2,arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sol_conn_t_flush) {
  {
    ipmi_sol_conn_t *arg1 = 0 ;
    int arg2 ;
    swig_cb *arg3 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 3)) {
      SWIG_croak("Usage: ipmi_sol_conn_t_flush(self,queue_selectors,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sol_conn_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sol_conn_t_flush" "', argument " "1"" of type '" "ipmi_sol_conn_t *""'"); 
    }
    arg1 = (ipmi_sol_conn_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_sol_conn_t_flush" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    if (items > 2) {
      {
        if (!SvROK(ST(2)))
        croak("Argument 3 is not a reference.");
        arg3 = ST(2);
      }
    }
    result = (int)ipmi_sol_conn_t_flush(arg1,arg2,arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_delete_ipmi_sol_config_t) {
  {
    ipmi_sol_config_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: delete_ipmi_sol_config_t(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sol_config_t, SWIG_POINTER_DISOWN |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_ipmi_sol_config_t" "', argument " "1"" of type '" "ipmi_sol_config_t *""'"); 
    }
    arg1 = (ipmi_sol_config_t *)(argp1);
    delete_ipmi_sol_config_t(arg1);
    ST(argvi) = &PL_sv_undef;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sol_config_t_get_val) {
  {
    ipmi_sol_config_t *arg1 = 0 ;
    int arg2 ;
    int *arg3 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int ivalue3 ;
    int argvi = 0;
    SV * _saved[1] ;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
      SWIG_croak("Usage: ipmi_sol_config_t_get_val(self,parm,index);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sol_config_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sol_config_t_get_val" "', argument " "1"" of type '" "ipmi_sol_config_t *""'"); 
    }
    arg1 = (ipmi_sol_config_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_sol_config_t_get_val" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    {
      SV* tempsv;
      if (!SvROK(ST(2))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(2));
      if (!SvIOK(tempsv)) {
        ivalue3 = 0;
      } else {
        ivalue3 = SvIV(tempsv);
      }
      arg3 = &ivalue3;
    }
    _saved[0] = ST(2);
    result = (char *)ipmi_sol_config_t_get_val(arg1,arg2,arg3);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setiv(tempsv, *arg3);
    }
    
    
    
    free((char*)result);
    XSRETURN(argvi);
    fail:;
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_sol_config_t_set_val) {
  {
    ipmi_sol_config_t *arg1 = 0 ;
    int arg2 ;
    int arg3 ;
    char *arg4 = 0 ;
    char *arg5 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    int res4 ;
    char *buf4 = 0 ;
    int alloc4 = 0 ;
    int res5 ;
    char *buf5 = 0 ;
    int alloc5 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 5) || (items > 5)) {
      SWIG_croak("Usage: ipmi_sol_config_t_set_val(self,parm,idx,type,value);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_sol_config_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_sol_config_t_set_val" "', argument " "1"" of type '" "ipmi_sol_config_t *""'"); 
    }
    arg1 = (ipmi_sol_config_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_sol_config_t_set_val" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    ecode3 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(2), &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ipmi_sol_config_t_set_val" "', argument " "3"" of type '" "int""'");
    } 
    arg3 = (int)(val3);
    res4 = SWIG_AsCharPtrAndSize(ST(3), &buf4, NULL, &alloc4);
    if (!SWIG_IsOK(res4)) {
      SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "ipmi_sol_config_t_set_val" "', argument " "4"" of type '" "char *""'");
    }
    arg4 = (char *)(buf4);
    res5 = SWIG_AsCharPtrAndSize(ST(4), &buf5, NULL, &alloc5);
    if (!SWIG_IsOK(res5)) {
      SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "ipmi_sol_config_t_set_val" "', argument " "5"" of type '" "char *""'");
    }
    arg5 = (char *)(buf5);
    result = (int)ipmi_sol_config_t_set_val(arg1,arg2,arg3,arg4,arg5);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    
    if (alloc4 == SWIG_NEWOBJ) free((char*)buf4);
    if (alloc5 == SWIG_NEWOBJ) free((char*)buf5);
    XSRETURN(argvi);
    fail:;
    
    
    
    if (alloc4 == SWIG_NEWOBJ) free((char*)buf4);
    if (alloc5 == SWIG_NEWOBJ) free((char*)buf5);
  }
  SWIG_croak_null();
}


XS(_wrap_delete_ipmi_solparm_t) {
  {
    ipmi_solparm_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: delete_ipmi_solparm_t(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_solparm_t, SWIG_POINTER_DISOWN |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_ipmi_solparm_t" "', argument " "1"" of type '" "ipmi_solparm_t *""'"); 
    }
    arg1 = (ipmi_solparm_t *)(argp1);
    delete_ipmi_solparm_t(arg1);
    ST(argvi) = &PL_sv_undef;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_solparm_t_get_mc_id) {
  {
    ipmi_solparm_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    ipmi_mcid_t *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_solparm_t_get_mc_id(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_solparm_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_solparm_t_get_mc_id" "', argument " "1"" of type '" "ipmi_solparm_t *""'"); 
    }
    arg1 = (ipmi_solparm_t *)(argp1);
    result = (ipmi_mcid_t *)ipmi_solparm_t_get_mc_id(arg1);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ipmi_mcid_t, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_solparm_t_get_channel) {
  {
    ipmi_solparm_t *arg1 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: ipmi_solparm_t_get_channel(self);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_solparm_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_solparm_t_get_channel" "', argument " "1"" of type '" "ipmi_solparm_t *""'"); 
    }
    arg1 = (ipmi_solparm_t *)(argp1);
    result = (int)ipmi_solparm_t_get_channel(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_solparm_t_get_parm) {
  {
    ipmi_solparm_t *arg1 = 0 ;
    int arg2 ;
    int arg3 ;
    int arg4 ;
    swig_cb *arg5 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    int val4 ;
    int ecode4 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 5) || (items > 5)) {
      SWIG_croak("Usage: ipmi_solparm_t_get_parm(self,parm,set,block,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_solparm_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_solparm_t_get_parm" "', argument " "1"" of type '" "ipmi_solparm_t *""'"); 
    }
    arg1 = (ipmi_solparm_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_solparm_t_get_parm" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    ecode3 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(2), &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ipmi_solparm_t_get_parm" "', argument " "3"" of type '" "int""'");
    } 
    arg3 = (int)(val3);
    ecode4 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(3), &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "ipmi_solparm_t_get_parm" "', argument " "4"" of type '" "int""'");
    } 
    arg4 = (int)(val4);
    {
      if (!SvROK(ST(4)))
      croak("Argument 5 is not a reference.");
      arg5 = ST(4);
    }
    result = (int)ipmi_solparm_t_get_parm(arg1,arg2,arg3,arg4,arg5);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_solparm_t_set_parm) {
  {
    ipmi_solparm_t *arg1 = 0 ;
    int arg2 ;
    char *arg3 = 0 ;
    swig_cb *arg4 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int res3 ;
    char *buf3 = 0 ;
    int alloc3 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 3) || (items > 4)) {
      SWIG_croak("Usage: ipmi_solparm_t_set_parm(self,parm,value,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_solparm_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_solparm_t_set_parm" "', argument " "1"" of type '" "ipmi_solparm_t *""'"); 
    }
    arg1 = (ipmi_solparm_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_solparm_t_set_parm" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    res3 = SWIG_AsCharPtrAndSize(ST(2), &buf3, NULL, &alloc3);
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "ipmi_solparm_t_set_parm" "', argument " "3"" of type '" "char *""'");
    }
    arg3 = (char *)(buf3);
    if (items > 3) {
      {
        if (!SvROK(ST(3)))
        croak("Argument 4 is not a reference.");
        arg4 = ST(3);
      }
    }
    result = (int)ipmi_solparm_t_set_parm(arg1,arg2,arg3,arg4);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    if (alloc3 == SWIG_NEWOBJ) free((char*)buf3);
    
    XSRETURN(argvi);
    fail:;
    
    
    if (alloc3 == SWIG_NEWOBJ) free((char*)buf3);
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_solparm_t_set_parm_array) {
  {
    ipmi_solparm_t *arg1 = 0 ;
    int arg2 ;
    intarray arg3 ;
    swig_cb *arg4 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    {
      (&arg3)->val = NULL;
    }
    if ((items < 3) || (items > 4)) {
      SWIG_croak("Usage: ipmi_solparm_t_set_parm_array(self,parm,value,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_solparm_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_solparm_t_set_parm_array" "', argument " "1"" of type '" "ipmi_solparm_t *""'"); 
    }
    arg1 = (ipmi_solparm_t *)(argp1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ipmi_solparm_t_set_parm_array" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    {
      AV *tempav;
      I32 len;
      int i;
      SV  **tv;
      if (!SvROK(ST(2)))
      croak("Argument 3 is not a reference.");
      if (SvTYPE(SvRV(ST(2))) != SVt_PVAV)
      croak("Argument 3 is not an array.");
      tempav = (AV*)SvRV(ST(2));
      len = av_len(tempav);
      (&arg3)->val = (int *) malloc((len+2)*sizeof(int));
      (&arg3)->len = len + 1;
      
      for (i = 0; i <= len; i++) {
        tv = av_fetch(tempav, i, 0);
        (&arg3)->val[i] = SvIV(*tv);
      }
    }
    if (items > 3) {
      {
        if (!SvROK(ST(3)))
        croak("Argument 4 is not a reference.");
        arg4 = ST(3);
      }
    }
    result = (int)ipmi_solparm_t_set_parm_array(arg1,arg2,arg3,arg4);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    {
      if ((&arg3)->val)
      free((&arg3)->val);
    }
    
    XSRETURN(argvi);
    fail:;
    
    
    {
      if ((&arg3)->val)
      free((&arg3)->val);
    }
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_solparm_t_get_config) {
  {
    ipmi_solparm_t *arg1 = 0 ;
    swig_cb *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 2)) {
      SWIG_croak("Usage: ipmi_solparm_t_get_config(self,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_solparm_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_solparm_t_get_config" "', argument " "1"" of type '" "ipmi_solparm_t *""'"); 
    }
    arg1 = (ipmi_solparm_t *)(argp1);
    {
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      arg2 = ST(1);
    }
    result = (int)ipmi_solparm_t_get_config(arg1,arg2);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    XSRETURN(argvi);
    fail:;
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_solparm_t_set_config) {
  {
    ipmi_solparm_t *arg1 = 0 ;
    ipmi_sol_config_t *arg2 = 0 ;
    swig_cb *arg3 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 2) || (items > 3)) {
      SWIG_croak("Usage: ipmi_solparm_t_set_config(self,config,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_solparm_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_solparm_t_set_config" "', argument " "1"" of type '" "ipmi_solparm_t *""'"); 
    }
    arg1 = (ipmi_solparm_t *)(argp1);
    res2 = SWIG_ConvertPtr(ST(1), &argp2,SWIGTYPE_p_ipmi_sol_config_t, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ipmi_solparm_t_set_config" "', argument " "2"" of type '" "ipmi_sol_config_t *""'"); 
    }
    arg2 = (ipmi_sol_config_t *)(argp2);
    if (items > 2) {
      {
        if (!SvROK(ST(2)))
        croak("Argument 3 is not a reference.");
        arg3 = ST(2);
      }
    }
    result = (int)ipmi_solparm_t_set_config(arg1,arg2,arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_ipmi_solparm_t_clear_lock) {
  {
    ipmi_solparm_t *arg1 = 0 ;
    ipmi_sol_config_t *arg2 = NULL ;
    swig_cb *arg3 = NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 3)) {
      SWIG_croak("Usage: ipmi_solparm_t_clear_lock(self,config,handler);");
    }
    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ipmi_solparm_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ipmi_solparm_t_clear_lock" "', argument " "1"" of type '" "ipmi_solparm_t *""'"); 
    }
    arg1 = (ipmi_solparm_t *)(argp1);
    if (items > 1) {
      res2 = SWIG_ConvertPtr(ST(1), &argp2,SWIGTYPE_p_ipmi_sol_config_t, 0 |  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ipmi_solparm_t_clear_lock" "', argument " "2"" of type '" "ipmi_sol_config_t *""'"); 
      }
      arg2 = (ipmi_sol_config_t *)(argp2);
    }
    if (items > 2) {
      {
        if (!SvROK(ST(2)))
        croak("Argument 3 is not a reference.");
        arg3 = ST(2);
      }
    }
    result = (int)ipmi_solparm_t_clear_lock(arg1,arg2,arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_enable_debug_malloc) {
  {
    int argvi = 0;
    dXSARGS;
    
    if ((items < 0) || (items > 0)) {
      SWIG_croak("Usage: enable_debug_malloc();");
    }
    enable_debug_malloc();
    ST(argvi) = &PL_sv_undef;
    XSRETURN(argvi);
    fail:;
  }
  SWIG_croak_null();
}


XS(_wrap_enable_debug_msg) {
  {
    int argvi = 0;
    dXSARGS;
    
    if ((items < 0) || (items > 0)) {
      SWIG_croak("Usage: enable_debug_msg();");
    }
    enable_debug_msg();
    ST(argvi) = &PL_sv_undef;
    XSRETURN(argvi);
    fail:;
  }
  SWIG_croak_null();
}


XS(_wrap_disable_debug_msg) {
  {
    int argvi = 0;
    dXSARGS;
    
    if ((items < 0) || (items > 0)) {
      SWIG_croak("Usage: disable_debug_msg();");
    }
    disable_debug_msg();
    ST(argvi) = &PL_sv_undef;
    XSRETURN(argvi);
    fail:;
  }
  SWIG_croak_null();
}


XS(_wrap_enable_debug_rawmsg) {
  {
    int argvi = 0;
    dXSARGS;
    
    if ((items < 0) || (items > 0)) {
      SWIG_croak("Usage: enable_debug_rawmsg();");
    }
    enable_debug_rawmsg();
    ST(argvi) = &PL_sv_undef;
    XSRETURN(argvi);
    fail:;
  }
  SWIG_croak_null();
}


XS(_wrap_disable_debug_rawmsg) {
  {
    int argvi = 0;
    dXSARGS;
    
    if ((items < 0) || (items > 0)) {
      SWIG_croak("Usage: disable_debug_rawmsg();");
    }
    disable_debug_rawmsg();
    ST(argvi) = &PL_sv_undef;
    XSRETURN(argvi);
    fail:;
  }
  SWIG_croak_null();
}


XS(_wrap_init_glib) {
  {
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 0) || (items > 0)) {
      SWIG_croak("Usage: init_glib();");
    }
    result = (int)init_glib();
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    XSRETURN(argvi);
    fail:;
  }
  SWIG_croak_null();
}


XS(_wrap_init_glib12) {
  {
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 0) || (items > 0)) {
      SWIG_croak("Usage: init_glib12();");
    }
    result = (int)init_glib12();
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    XSRETURN(argvi);
    fail:;
  }
  SWIG_croak_null();
}


XS(_wrap_init_tcl) {
  {
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 0) || (items > 0)) {
      SWIG_croak("Usage: init_tcl();");
    }
    result = (int)init_tcl();
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    XSRETURN(argvi);
    fail:;
  }
  SWIG_croak_null();
}


XS(_wrap_init_posix) {
  {
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 0) || (items > 0)) {
      SWIG_croak("Usage: init_posix();");
    }
    result = (int)init_posix();
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    XSRETURN(argvi);
    fail:;
  }
  SWIG_croak_null();
}


XS(_wrap_init) {
  {
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 0) || (items > 0)) {
      SWIG_croak("Usage: init();");
    }
    result = (int)init();
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    XSRETURN(argvi);
    fail:;
  }
  SWIG_croak_null();
}


XS(_wrap_shutdown_everything) {
  {
    int argvi = 0;
    dXSARGS;
    
    if ((items < 0) || (items > 0)) {
      SWIG_croak("Usage: shutdown_everything();");
    }
    shutdown_everything();
    ST(argvi) = &PL_sv_undef;
    XSRETURN(argvi);
    fail:;
  }
  SWIG_croak_null();
}


XS(_wrap_wait_io) {
  {
    int arg1 ;
    int val1 ;
    int ecode1 = 0 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: wait_io(timeout);");
    }
    ecode1 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(0), &val1);
    if (!SWIG_IsOK(ecode1)) {
      SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "wait_io" "', argument " "1"" of type '" "int""'");
    } 
    arg1 = (int)(val1);
    wait_io(arg1);
    ST(argvi) = &PL_sv_undef;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_open_domain) {
  {
    char *arg1 = 0 ;
    argarray *arg2 = 0 ;
    swig_cb *arg3 = NULL ;
    swig_cb *arg4 = NULL ;
    int res1 ;
    char *buf1 = 0 ;
    int alloc1 = 0 ;
    argarray argval2 ;
    int argvi = 0;
    ipmi_domain_id_t *result = 0 ;
    dXSARGS;
    
    if ((items < 2) || (items > 4)) {
      SWIG_croak("Usage: open_domain(name,args,done,up);");
    }
    res1 = SWIG_AsCharPtrAndSize(ST(0), &buf1, NULL, &alloc1);
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "open_domain" "', argument " "1"" of type '" "char *""'");
    }
    arg1 = (char *)(buf1);
    {
      AV *tempav;
      int i;
      SV  **tv;
      arg2 = &argval2;
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      if (SvTYPE(SvRV(ST(1))) != SVt_PVAV)
      croak("Argument 2 is not an array.");
      tempav = (AV*)SvRV(ST(1));
      arg2->len = av_len(tempav) + 1;
      arg2->val = malloc((arg2->len)*sizeof(char *));
      for (i = 0; i < arg2->len; i++) {
        tv = av_fetch(tempav, i, 0);
        arg2->val[i] = (char *) SvPV(*tv,PL_na);
      }
    }
    if (items > 2) {
      {
        if (!SvROK(ST(2)))
        croak("Argument 3 is not a reference.");
        arg3 = ST(2);
      }
    }
    if (items > 3) {
      {
        if (!SvROK(ST(3)))
        croak("Argument 4 is not a reference.");
        arg4 = ST(3);
      }
    }
    result = (ipmi_domain_id_t *)open_domain(arg1,arg2,arg3,arg4);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ipmi_domain_id_t, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
    if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
    {
      free(arg2->val);
    }
    
    
    XSRETURN(argvi);
    fail:;
    if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
    {
      free(arg2->val);
    }
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_open_domain2) {
  {
    char *arg1 = 0 ;
    argarray *arg2 = 0 ;
    swig_cb *arg3 = NULL ;
    swig_cb *arg4 = NULL ;
    int res1 ;
    char *buf1 = 0 ;
    int alloc1 = 0 ;
    argarray argval2 ;
    int argvi = 0;
    ipmi_domain_id_t *result = 0 ;
    dXSARGS;
    
    if ((items < 2) || (items > 4)) {
      SWIG_croak("Usage: open_domain2(name,args,done,up);");
    }
    res1 = SWIG_AsCharPtrAndSize(ST(0), &buf1, NULL, &alloc1);
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "open_domain2" "', argument " "1"" of type '" "char *""'");
    }
    arg1 = (char *)(buf1);
    {
      AV *tempav;
      int i;
      SV  **tv;
      arg2 = &argval2;
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      if (SvTYPE(SvRV(ST(1))) != SVt_PVAV)
      croak("Argument 2 is not an array.");
      tempav = (AV*)SvRV(ST(1));
      arg2->len = av_len(tempav) + 1;
      arg2->val = malloc((arg2->len)*sizeof(char *));
      for (i = 0; i < arg2->len; i++) {
        tv = av_fetch(tempav, i, 0);
        arg2->val[i] = (char *) SvPV(*tv,PL_na);
      }
    }
    if (items > 2) {
      {
        if (!SvROK(ST(2)))
        croak("Argument 3 is not a reference.");
        arg3 = ST(2);
      }
    }
    if (items > 3) {
      {
        if (!SvROK(ST(3)))
        croak("Argument 4 is not a reference.");
        arg4 = ST(3);
      }
    }
    result = (ipmi_domain_id_t *)open_domain2(arg1,arg2,arg3,arg4);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ipmi_domain_id_t, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
    if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
    {
      free(arg2->val);
    }
    
    
    XSRETURN(argvi);
    fail:;
    if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
    {
      free(arg2->val);
    }
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_open_domain3) {
  {
    char *arg1 = 0 ;
    argarray *arg2 = 0 ;
    iargarray *arg3 = 0 ;
    swig_cb *arg4 = NULL ;
    swig_cb *arg5 = NULL ;
    int res1 ;
    char *buf1 = 0 ;
    int alloc1 = 0 ;
    argarray argval2 ;
    iargarray argval3 ;
    int argvi = 0;
    ipmi_domain_id_t *result = 0 ;
    dXSARGS;
    
    if ((items < 3) || (items > 5)) {
      SWIG_croak("Usage: open_domain3(name,options,args,done,up);");
    }
    res1 = SWIG_AsCharPtrAndSize(ST(0), &buf1, NULL, &alloc1);
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "open_domain3" "', argument " "1"" of type '" "char *""'");
    }
    arg1 = (char *)(buf1);
    {
      AV *tempav;
      int i;
      SV  **tv;
      arg2 = &argval2;
      if (!SvROK(ST(1)))
      croak("Argument 2 is not a reference.");
      if (SvTYPE(SvRV(ST(1))) != SVt_PVAV)
      croak("Argument 2 is not an array.");
      tempav = (AV*)SvRV(ST(1));
      arg2->len = av_len(tempav) + 1;
      arg2->val = malloc((arg2->len)*sizeof(char *));
      for (i = 0; i < arg2->len; i++) {
        tv = av_fetch(tempav, i, 0);
        arg2->val[i] = (char *) SvPV(*tv,PL_na);
      }
    }
    {
      AV *tempav;
      int i;
      SV  **tv;
      arg3 = &argval3;
      if (!SvROK(ST(2)))
      croak("Argument 3 is not a reference.");
      if (SvTYPE(SvRV(ST(2))) != SVt_PVAV)
      croak("Argument 3 is not an array.");
      tempav = (AV*)SvRV(ST(2));
      arg3->len = av_len(tempav) + 1;
      arg3->val = malloc((arg3->len)*sizeof(char *));
      for (i = 0; i < arg3->len; i++) {
        tv = av_fetch(tempav, i, 0);
        if (SWIG_ConvertPtr(*tv, (void **) &(arg3->val[i]),
            SWIGTYPE_p_ipmi_args_t,0) < 0)
        SWIG_croak("Type error. Expected _p_ipmi_args_t");
        if (! arg3->val[i])
        SWIG_croak("Type error. NULL not allowed for _p_ipmi_args_t");
      }
    }
    if (items > 3) {
      {
        if (!SvROK(ST(3)))
        croak("Argument 4 is not a reference.");
        arg4 = ST(3);
      }
    }
    if (items > 4) {
      {
        if (!SvROK(ST(4)))
        croak("Argument 5 is not a reference.");
        arg5 = ST(4);
      }
    }
    result = (ipmi_domain_id_t *)open_domain3(arg1,arg2,arg3,arg4,arg5);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ipmi_domain_id_t, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
    if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
    {
      free(arg2->val);
    }
    {
      free(arg3->val);
    }
    
    
    XSRETURN(argvi);
    fail:;
    if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
    {
      free(arg2->val);
    }
    {
      free(arg3->val);
    }
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_parse_args_iter_help) {
  {
    swig_cb *arg1 = 0 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: parse_args_iter_help(help_cb);");
    }
    {
      if (!SvROK(ST(0)))
      croak("Argument 1 is not a reference.");
      arg1 = ST(0);
    }
    parse_args_iter_help(arg1);
    ST(argvi) = &PL_sv_undef;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_parse_option_help) {
  {
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 0) || (items > 0)) {
      SWIG_croak("Usage: parse_option_help();");
    }
    result = (char *)parse_option_help();
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    XSRETURN(argvi);
    fail:;
  }
  SWIG_croak_null();
}


XS(_wrap_add_domain_change_handler) {
  {
    swig_cb *arg1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: add_domain_change_handler(handler);");
    }
    {
      if (!SvROK(ST(0)))
      croak("Argument 1 is not a reference.");
      arg1 = ST(0);
    }
    result = (int)add_domain_change_handler(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_remove_domain_change_handler) {
  {
    swig_cb *arg1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: remove_domain_change_handler(handler);");
    }
    {
      if (!SvROK(ST(0)))
      croak("Argument 1 is not a reference.");
      arg1 = ST(0);
    }
    result = (int)remove_domain_change_handler(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_set_log_handler) {
  {
    swig_cb *arg1 = NULL ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 0) || (items > 1)) {
      SWIG_croak("Usage: set_log_handler(handler);");
    }
    if (items > 0) {
      {
        if (!SvROK(ST(0)))
        croak("Argument 1 is not a reference.");
        arg1 = ST(0);
      }
    }
    set_log_handler(arg1);
    ST(argvi) = &PL_sv_undef;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_color_string) {
  {
    int arg1 ;
    int val1 ;
    int ecode1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: color_string(color);");
    }
    ecode1 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(0), &val1);
    if (!SWIG_IsOK(ecode1)) {
      SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "color_string" "', argument " "1"" of type '" "int""'");
    } 
    arg1 = (int)(val1);
    result = (char *)color_string(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_lanparm_parm_to_str) {
  {
    int arg1 ;
    int val1 ;
    int ecode1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: lanparm_parm_to_str(parm);");
    }
    ecode1 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(0), &val1);
    if (!SWIG_IsOK(ecode1)) {
      SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "lanparm_parm_to_str" "', argument " "1"" of type '" "int""'");
    } 
    arg1 = (int)(val1);
    result = (char *)lanparm_parm_to_str(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_lanparm_str_to_parm) {
  {
    char *arg1 = 0 ;
    int res1 ;
    char *buf1 = 0 ;
    int alloc1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: lanparm_str_to_parm(str);");
    }
    res1 = SWIG_AsCharPtrAndSize(ST(0), &buf1, NULL, &alloc1);
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "lanparm_str_to_parm" "', argument " "1"" of type '" "char *""'");
    }
    arg1 = (char *)(buf1);
    result = (int)lanparm_str_to_parm(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
    XSRETURN(argvi);
    fail:;
    if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
  }
  SWIG_croak_null();
}


XS(_wrap_lanconfig_enum_val) {
  {
    int arg1 ;
    int arg2 ;
    int *arg3 = 0 ;
    char **arg4 = 0 ;
    int val1 ;
    int ecode1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int ivalue3 ;
    char *svalue4 ;
    int argvi = 0;
    SV * _saved[2] ;
    int result;
    dXSARGS;
    
    if ((items < 4) || (items > 4)) {
      SWIG_croak("Usage: lanconfig_enum_val(parm,val,nval,sval);");
    }
    ecode1 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(0), &val1);
    if (!SWIG_IsOK(ecode1)) {
      SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "lanconfig_enum_val" "', argument " "1"" of type '" "int""'");
    } 
    arg1 = (int)(val1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "lanconfig_enum_val" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    {
      SV* tempsv;
      if (!SvROK(ST(2))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(2));
      if (!SvIOK(tempsv)) {
        ivalue3 = 0;
      } else {
        ivalue3 = SvIV(tempsv);
      }
      arg3 = &ivalue3;
    }
    {
      SV* tempsv;
      if (!SvROK(ST(3))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(3));
      if (!SvOK(tempsv)) {
        svalue4 = NULL;
      } else {
        svalue4 = SvPV_nolen(tempsv);
      }
      arg4 = &svalue4;
    }
    _saved[0] = ST(2);
    _saved[1] = ST(3);
    result = (int)lanconfig_enum_val(arg1,arg2,arg3,(char const **)arg4);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setiv(tempsv, *arg3);
    }
    {
      SV *tempsv;
      tempsv = SvRV(_saved[1]);
      sv_setpv(tempsv, *arg4);
    }
    
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_lanconfig_enum_idx) {
  {
    int arg1 ;
    int arg2 ;
    char **arg3 = 0 ;
    int val1 ;
    int ecode1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    char *svalue3 ;
    int argvi = 0;
    SV * _saved[1] ;
    int result;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
      SWIG_croak("Usage: lanconfig_enum_idx(parm,idx,sval);");
    }
    ecode1 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(0), &val1);
    if (!SWIG_IsOK(ecode1)) {
      SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "lanconfig_enum_idx" "', argument " "1"" of type '" "int""'");
    } 
    arg1 = (int)(val1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "lanconfig_enum_idx" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    {
      SV* tempsv;
      if (!SvROK(ST(2))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(2));
      if (!SvOK(tempsv)) {
        svalue3 = NULL;
      } else {
        svalue3 = SvPV_nolen(tempsv);
      }
      arg3 = &svalue3;
    }
    _saved[0] = ST(2);
    result = (int)lanconfig_enum_idx(arg1,arg2,(char const **)arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setpv(tempsv, *arg3);
    }
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_pef_parm_to_str) {
  {
    int arg1 ;
    int val1 ;
    int ecode1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: pef_parm_to_str(parm);");
    }
    ecode1 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(0), &val1);
    if (!SWIG_IsOK(ecode1)) {
      SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "pef_parm_to_str" "', argument " "1"" of type '" "int""'");
    } 
    arg1 = (int)(val1);
    result = (char *)pef_parm_to_str(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_pef_str_to_parm) {
  {
    char *arg1 = 0 ;
    int res1 ;
    char *buf1 = 0 ;
    int alloc1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: pef_str_to_parm(str);");
    }
    res1 = SWIG_AsCharPtrAndSize(ST(0), &buf1, NULL, &alloc1);
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "pef_str_to_parm" "', argument " "1"" of type '" "char *""'");
    }
    arg1 = (char *)(buf1);
    result = (int)pef_str_to_parm(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
    XSRETURN(argvi);
    fail:;
    if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
  }
  SWIG_croak_null();
}


XS(_wrap_pefconfig_enum_val) {
  {
    int arg1 ;
    int arg2 ;
    int *arg3 = 0 ;
    char **arg4 = 0 ;
    int val1 ;
    int ecode1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int ivalue3 ;
    char *svalue4 ;
    int argvi = 0;
    SV * _saved[2] ;
    int result;
    dXSARGS;
    
    if ((items < 4) || (items > 4)) {
      SWIG_croak("Usage: pefconfig_enum_val(parm,val,nval,sval);");
    }
    ecode1 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(0), &val1);
    if (!SWIG_IsOK(ecode1)) {
      SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "pefconfig_enum_val" "', argument " "1"" of type '" "int""'");
    } 
    arg1 = (int)(val1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "pefconfig_enum_val" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    {
      SV* tempsv;
      if (!SvROK(ST(2))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(2));
      if (!SvIOK(tempsv)) {
        ivalue3 = 0;
      } else {
        ivalue3 = SvIV(tempsv);
      }
      arg3 = &ivalue3;
    }
    {
      SV* tempsv;
      if (!SvROK(ST(3))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(3));
      if (!SvOK(tempsv)) {
        svalue4 = NULL;
      } else {
        svalue4 = SvPV_nolen(tempsv);
      }
      arg4 = &svalue4;
    }
    _saved[0] = ST(2);
    _saved[1] = ST(3);
    result = (int)pefconfig_enum_val(arg1,arg2,arg3,(char const **)arg4);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setiv(tempsv, *arg3);
    }
    {
      SV *tempsv;
      tempsv = SvRV(_saved[1]);
      sv_setpv(tempsv, *arg4);
    }
    
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_pefconfig_enum_idx) {
  {
    int arg1 ;
    int arg2 ;
    char **arg3 = 0 ;
    int val1 ;
    int ecode1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    char *svalue3 ;
    int argvi = 0;
    SV * _saved[1] ;
    int result;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
      SWIG_croak("Usage: pefconfig_enum_idx(parm,idx,sval);");
    }
    ecode1 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(0), &val1);
    if (!SWIG_IsOK(ecode1)) {
      SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "pefconfig_enum_idx" "', argument " "1"" of type '" "int""'");
    } 
    arg1 = (int)(val1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "pefconfig_enum_idx" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    {
      SV* tempsv;
      if (!SvROK(ST(2))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(2));
      if (!SvOK(tempsv)) {
        svalue3 = NULL;
      } else {
        svalue3 = SvPV_nolen(tempsv);
      }
      arg3 = &svalue3;
    }
    _saved[0] = ST(2);
    result = (int)pefconfig_enum_idx(arg1,arg2,(char const **)arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setpv(tempsv, *arg3);
    }
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_solparm_parm_to_str) {
  {
    int arg1 ;
    int val1 ;
    int ecode1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: solparm_parm_to_str(parm);");
    }
    ecode1 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(0), &val1);
    if (!SWIG_IsOK(ecode1)) {
      SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "solparm_parm_to_str" "', argument " "1"" of type '" "int""'");
    } 
    arg1 = (int)(val1);
    result = (char *)solparm_parm_to_str(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_solparm_str_to_parm) {
  {
    char *arg1 = 0 ;
    int res1 ;
    char *buf1 = 0 ;
    int alloc1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: solparm_str_to_parm(str);");
    }
    res1 = SWIG_AsCharPtrAndSize(ST(0), &buf1, NULL, &alloc1);
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "solparm_str_to_parm" "', argument " "1"" of type '" "char *""'");
    }
    arg1 = (char *)(buf1);
    result = (int)solparm_str_to_parm(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
    XSRETURN(argvi);
    fail:;
    if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
  }
  SWIG_croak_null();
}


XS(_wrap_solconfig_enum_val) {
  {
    int arg1 ;
    int arg2 ;
    int *arg3 = 0 ;
    char **arg4 = 0 ;
    int val1 ;
    int ecode1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int ivalue3 ;
    char *svalue4 ;
    int argvi = 0;
    SV * _saved[2] ;
    int result;
    dXSARGS;
    
    if ((items < 4) || (items > 4)) {
      SWIG_croak("Usage: solconfig_enum_val(parm,val,nval,sval);");
    }
    ecode1 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(0), &val1);
    if (!SWIG_IsOK(ecode1)) {
      SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "solconfig_enum_val" "', argument " "1"" of type '" "int""'");
    } 
    arg1 = (int)(val1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "solconfig_enum_val" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    {
      SV* tempsv;
      if (!SvROK(ST(2))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(2));
      if (!SvIOK(tempsv)) {
        ivalue3 = 0;
      } else {
        ivalue3 = SvIV(tempsv);
      }
      arg3 = &ivalue3;
    }
    {
      SV* tempsv;
      if (!SvROK(ST(3))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(3));
      if (!SvOK(tempsv)) {
        svalue4 = NULL;
      } else {
        svalue4 = SvPV_nolen(tempsv);
      }
      arg4 = &svalue4;
    }
    _saved[0] = ST(2);
    _saved[1] = ST(3);
    result = (int)solconfig_enum_val(arg1,arg2,arg3,(char const **)arg4);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setiv(tempsv, *arg3);
    }
    {
      SV *tempsv;
      tempsv = SvRV(_saved[1]);
      sv_setpv(tempsv, *arg4);
    }
    
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_solconfig_enum_idx) {
  {
    int arg1 ;
    int arg2 ;
    char **arg3 = 0 ;
    int val1 ;
    int ecode1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    char *svalue3 ;
    int argvi = 0;
    SV * _saved[1] ;
    int result;
    dXSARGS;
    
    if ((items < 3) || (items > 3)) {
      SWIG_croak("Usage: solconfig_enum_idx(parm,idx,sval);");
    }
    ecode1 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(0), &val1);
    if (!SWIG_IsOK(ecode1)) {
      SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "solconfig_enum_idx" "', argument " "1"" of type '" "int""'");
    } 
    arg1 = (int)(val1);
    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "solconfig_enum_idx" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = (int)(val2);
    {
      SV* tempsv;
      if (!SvROK(ST(2))) {
        croak("expected a reference\n");
      }
      tempsv = SvRV(ST(2));
      if (!SvOK(tempsv)) {
        svalue3 = NULL;
      } else {
        svalue3 = SvPV_nolen(tempsv);
      }
      arg3 = &svalue3;
    }
    _saved[0] = ST(2);
    result = (int)solconfig_enum_idx(arg1,arg2,(char const **)arg3);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    {
      SV *tempsv;
      tempsv = SvRV(_saved[0]);
      sv_setpv(tempsv, *arg3);
    }
    
    
    
    XSRETURN(argvi);
    fail:;
    
    
    
  }
  SWIG_croak_null();
}


XS(_wrap_get_threshold_access_support_string) {
  {
    int arg1 ;
    int val1 ;
    int ecode1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: get_threshold_access_support_string(val);");
    }
    ecode1 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(0), &val1);
    if (!SWIG_IsOK(ecode1)) {
      SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "get_threshold_access_support_string" "', argument " "1"" of type '" "int""'");
    } 
    arg1 = (int)(val1);
    result = (char *)get_threshold_access_support_string(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_get_hysteresis_support_string) {
  {
    int arg1 ;
    int val1 ;
    int ecode1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: get_hysteresis_support_string(val);");
    }
    ecode1 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(0), &val1);
    if (!SWIG_IsOK(ecode1)) {
      SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "get_hysteresis_support_string" "', argument " "1"" of type '" "int""'");
    } 
    arg1 = (int)(val1);
    result = (char *)get_hysteresis_support_string(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_get_event_support_string) {
  {
    int arg1 ;
    int val1 ;
    int ecode1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: get_event_support_string(val);");
    }
    ecode1 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(0), &val1);
    if (!SWIG_IsOK(ecode1)) {
      SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "get_event_support_string" "', argument " "1"" of type '" "int""'");
    } 
    arg1 = (int)(val1);
    result = (char *)get_event_support_string(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_channel_medium_string) {
  {
    int arg1 ;
    int val1 ;
    int ecode1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: channel_medium_string(val);");
    }
    ecode1 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(0), &val1);
    if (!SWIG_IsOK(ecode1)) {
      SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "channel_medium_string" "', argument " "1"" of type '" "int""'");
    } 
    arg1 = (int)(val1);
    result = (char *)channel_medium_string(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_channel_protocol_string) {
  {
    int arg1 ;
    int val1 ;
    int ecode1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: channel_protocol_string(val);");
    }
    ecode1 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(0), &val1);
    if (!SWIG_IsOK(ecode1)) {
      SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "channel_protocol_string" "', argument " "1"" of type '" "int""'");
    } 
    arg1 = (int)(val1);
    result = (char *)channel_protocol_string(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_channel_session_support_string) {
  {
    int arg1 ;
    int val1 ;
    int ecode1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: channel_session_support_string(val);");
    }
    ecode1 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(0), &val1);
    if (!SWIG_IsOK(ecode1)) {
      SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "channel_session_support_string" "', argument " "1"" of type '" "int""'");
    } 
    arg1 = (int)(val1);
    result = (char *)channel_session_support_string(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_channel_access_mode_string) {
  {
    int arg1 ;
    int val1 ;
    int ecode1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: channel_access_mode_string(val);");
    }
    ecode1 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(0), &val1);
    if (!SWIG_IsOK(ecode1)) {
      SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "channel_access_mode_string" "', argument " "1"" of type '" "int""'");
    } 
    arg1 = (int)(val1);
    result = (char *)channel_access_mode_string(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_privilege_string) {
  {
    int arg1 ;
    int val1 ;
    int ecode1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: privilege_string(val);");
    }
    ecode1 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(0), &val1);
    if (!SWIG_IsOK(ecode1)) {
      SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "privilege_string" "', argument " "1"" of type '" "int""'");
    } 
    arg1 = (int)(val1);
    result = (char *)privilege_string(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_authtype_string) {
  {
    int arg1 ;
    int val1 ;
    int ecode1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: authtype_string(val);");
    }
    ecode1 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(0), &val1);
    if (!SWIG_IsOK(ecode1)) {
      SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "authtype_string" "', argument " "1"" of type '" "int""'");
    } 
    arg1 = (int)(val1);
    result = (char *)authtype_string(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_get_error_string) {
  {
    unsigned int arg1 ;
    unsigned int val1 ;
    int ecode1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: get_error_string(val);");
    }
    ecode1 = SWIG_AsVal_unsigned_SS_int SWIG_PERL_CALL_ARGS_2(ST(0), &val1);
    if (!SWIG_IsOK(ecode1)) {
      SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "get_error_string" "', argument " "1"" of type '" "unsigned int""'");
    } 
    arg1 = (unsigned int)(val1);
    result = (char *)get_error_string(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    free((char*)result);
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_alloc_empty_args) {
  {
    char *arg1 = 0 ;
    int res1 ;
    char *buf1 = 0 ;
    int alloc1 = 0 ;
    int argvi = 0;
    ipmi_args_t *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: alloc_empty_args(con_type);");
    }
    res1 = SWIG_AsCharPtrAndSize(ST(0), &buf1, NULL, &alloc1);
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "alloc_empty_args" "', argument " "1"" of type '" "char *""'");
    }
    arg1 = (char *)(buf1);
    result = (ipmi_args_t *)alloc_empty_args(arg1);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ipmi_args_t, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
    if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
    XSRETURN(argvi);
    fail:;
    if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
  }
  SWIG_croak_null();
}


XS(_wrap_alloc_parse_args) {
  {
    argarray *arg1 = 0 ;
    argarray argval1 ;
    int argvi = 0;
    ipmi_args_t *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: alloc_parse_args(args);");
    }
    {
      AV *tempav;
      int i;
      SV  **tv;
      arg1 = &argval1;
      if (!SvROK(ST(0)))
      croak("Argument 1 is not a reference.");
      if (SvTYPE(SvRV(ST(0))) != SVt_PVAV)
      croak("Argument 1 is not an array.");
      tempav = (AV*)SvRV(ST(0));
      arg1->len = av_len(tempav) + 1;
      arg1->val = malloc((arg1->len)*sizeof(char *));
      for (i = 0; i < arg1->len; i++) {
        tv = av_fetch(tempav, i, 0);
        arg1->val[i] = (char *) SvPV(*tv,PL_na);
      }
    }
    result = (ipmi_args_t *)alloc_parse_args(arg1);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ipmi_args_t, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
    {
      free(arg1->val);
    }
    XSRETURN(argvi);
    fail:;
    {
      free(arg1->val);
    }
  }
  SWIG_croak_null();
}


XS(_wrap_fru_index_to_str) {
  {
    int arg1 ;
    int val1 ;
    int ecode1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: fru_index_to_str(idx);");
    }
    ecode1 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(0), &val1);
    if (!SWIG_IsOK(ecode1)) {
      SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "fru_index_to_str" "', argument " "1"" of type '" "int""'");
    } 
    arg1 = (int)(val1);
    result = (char *)ipmi_fru_index_to_str(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_fru_str_to_index) {
  {
    char *arg1 = 0 ;
    int res1 ;
    char *buf1 = 0 ;
    int alloc1 = 0 ;
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: fru_str_to_index(name);");
    }
    res1 = SWIG_AsCharPtrAndSize(ST(0), &buf1, NULL, &alloc1);
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fru_str_to_index" "', argument " "1"" of type '" "char *""'");
    }
    arg1 = (char *)(buf1);
    result = (int)ipmi_fru_str_to_index(arg1);
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
    XSRETURN(argvi);
    fail:;
    if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
  }
  SWIG_croak_null();
}


XS(_wrap_alloc_cmdlang) {
  {
    swig_cb *arg1 = 0 ;
    int argvi = 0;
    ipmi_cmdlang_t *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: alloc_cmdlang(handler);");
    }
    {
      if (!SvROK(ST(0)))
      croak("Argument 1 is not a reference.");
      arg1 = ST(0);
    }
    result = (ipmi_cmdlang_t *)alloc_cmdlang(arg1);
    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ipmi_cmdlang_t, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_cmdlang_set_evinfo) {
  {
    int arg1 ;
    int val1 ;
    int ecode1 = 0 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: cmdlang_set_evinfo(evinfo);");
    }
    ecode1 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(0), &val1);
    if (!SWIG_IsOK(ecode1)) {
      SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "cmdlang_set_evinfo" "', argument " "1"" of type '" "int""'");
    } 
    arg1 = (int)(val1);
    cmdlang_set_evinfo(arg1);
    ST(argvi) = &PL_sv_undef;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_cmdlang_get_evinfo) {
  {
    int argvi = 0;
    int result;
    dXSARGS;
    
    if ((items < 0) || (items > 0)) {
      SWIG_croak("Usage: cmdlang_get_evinfo();");
    }
    result = (int)cmdlang_get_evinfo();
    ST(argvi) = SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
    XSRETURN(argvi);
    fail:;
  }
  SWIG_croak_null();
}


XS(_wrap_set_cmdlang_global_err_handler) {
  {
    swig_cb *arg1 = 0 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: set_cmdlang_global_err_handler(handler);");
    }
    {
      if (!SvROK(ST(0)))
      croak("Argument 1 is not a reference.");
      arg1 = ST(0);
    }
    set_cmdlang_global_err_handler(arg1);
    ST(argvi) = &PL_sv_undef;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_set_cmdlang_event_handler) {
  {
    swig_cb *arg1 = 0 ;
    int argvi = 0;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: set_cmdlang_event_handler(handler);");
    }
    {
      if (!SvROK(ST(0)))
      croak("Argument 1 is not a reference.");
      arg1 = ST(0);
    }
    set_cmdlang_event_handler(arg1);
    ST(argvi) = &PL_sv_undef;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}


XS(_wrap_sol_state_string) {
  {
    int arg1 ;
    int val1 ;
    int ecode1 = 0 ;
    int argvi = 0;
    char *result = 0 ;
    dXSARGS;
    
    if ((items < 1) || (items > 1)) {
      SWIG_croak("Usage: sol_state_string(val);");
    }
    ecode1 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(0), &val1);
    if (!SWIG_IsOK(ecode1)) {
      SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "sol_state_string" "', argument " "1"" of type '" "int""'");
    } 
    arg1 = (int)(val1);
    result = (char *)sol_state_string(arg1);
    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
    
    XSRETURN(argvi);
    fail:;
    
  }
  SWIG_croak_null();
}



/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */

static swig_type_info _swigt__p_argarray = {"_p_argarray", "argarray *|struct argarray *", 0, 0, (void*)"OpenIPMI::argarray", 0};
static swig_type_info _swigt__p_char = {"_p_char", "char *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_charbuf = {"_p_charbuf", "charbuf *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_double = {"_p_double", "double *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_iargarray = {"_p_iargarray", "iargarray *|struct iargarray *", 0, 0, (void*)"OpenIPMI::iargarray", 0};
static swig_type_info _swigt__p_int = {"_p_int", "int *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_intarray = {"_p_intarray", "intarray *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_ipmi_args_t = {"_p_ipmi_args_t", "ipmi_args_t *", 0, 0, (void*)"OpenIPMI::ipmi_args_t", 0};
static swig_type_info _swigt__p_ipmi_channel_access_t = {"_p_ipmi_channel_access_t", "ipmi_channel_access_t *", 0, 0, (void*)"OpenIPMI::ipmi_channel_access_t", 0};
static swig_type_info _swigt__p_ipmi_channel_info_t = {"_p_ipmi_channel_info_t", "ipmi_channel_info_t *", 0, 0, (void*)"OpenIPMI::ipmi_channel_info_t", 0};
static swig_type_info _swigt__p_ipmi_cmdlang_event_t = {"_p_ipmi_cmdlang_event_t", "ipmi_cmdlang_event_t *", 0, 0, (void*)"OpenIPMI::ipmi_cmdlang_event_t", 0};
static swig_type_info _swigt__p_ipmi_cmdlang_t = {"_p_ipmi_cmdlang_t", "ipmi_cmdlang_t *", 0, 0, (void*)"OpenIPMI::ipmi_cmdlang_t", 0};
static swig_type_info _swigt__p_ipmi_control_id_t = {"_p_ipmi_control_id_t", "ipmi_control_id_t *", 0, 0, (void*)"OpenIPMI::ipmi_control_id_t", 0};
static swig_type_info _swigt__p_ipmi_control_t = {"_p_ipmi_control_t", "ipmi_control_t *", 0, 0, (void*)"OpenIPMI::ipmi_control_t", 0};
static swig_type_info _swigt__p_ipmi_domain_id_t = {"_p_ipmi_domain_id_t", "ipmi_domain_id_t *", 0, 0, (void*)"OpenIPMI::ipmi_domain_id_t", 0};
static swig_type_info _swigt__p_ipmi_domain_t = {"_p_ipmi_domain_t", "ipmi_domain_t *", 0, 0, (void*)"OpenIPMI::ipmi_domain_t", 0};
static swig_type_info _swigt__p_ipmi_entity_id_t = {"_p_ipmi_entity_id_t", "ipmi_entity_id_t *", 0, 0, (void*)"OpenIPMI::ipmi_entity_id_t", 0};
static swig_type_info _swigt__p_ipmi_entity_t = {"_p_ipmi_entity_t", "ipmi_entity_t *", 0, 0, (void*)"OpenIPMI::ipmi_entity_t", 0};
static swig_type_info _swigt__p_ipmi_event_t = {"_p_ipmi_event_t", "ipmi_event_t *", 0, 0, (void*)"OpenIPMI::ipmi_event_t", 0};
static swig_type_info _swigt__p_ipmi_fru_node_t = {"_p_ipmi_fru_node_t", "ipmi_fru_node_t *", 0, 0, (void*)"OpenIPMI::ipmi_fru_node_t", 0};
static swig_type_info _swigt__p_ipmi_fru_t = {"_p_ipmi_fru_t", "ipmi_fru_t *", 0, 0, (void*)"OpenIPMI::ipmi_fru_t", 0};
static swig_type_info _swigt__p_ipmi_lan_config_t = {"_p_ipmi_lan_config_t", "ipmi_lan_config_t *", 0, 0, (void*)"OpenIPMI::ipmi_lan_config_t", 0};
static swig_type_info _swigt__p_ipmi_lanparm_t = {"_p_ipmi_lanparm_t", "ipmi_lanparm_t *", 0, 0, (void*)"OpenIPMI::ipmi_lanparm_t", 0};
static swig_type_info _swigt__p_ipmi_mc_t = {"_p_ipmi_mc_t", "ipmi_mc_t *", 0, 0, (void*)"OpenIPMI::ipmi_mc_t", 0};
static swig_type_info _swigt__p_ipmi_mcid_t = {"_p_ipmi_mcid_t", "ipmi_mcid_t *", 0, 0, (void*)"OpenIPMI::ipmi_mcid_t", 0};
static swig_type_info _swigt__p_ipmi_pef_config_t = {"_p_ipmi_pef_config_t", "ipmi_pef_config_t *", 0, 0, (void*)"OpenIPMI::ipmi_pef_config_t", 0};
static swig_type_info _swigt__p_ipmi_pef_t = {"_p_ipmi_pef_t", "ipmi_pef_t *", 0, 0, (void*)"OpenIPMI::ipmi_pef_t", 0};
static swig_type_info _swigt__p_ipmi_pet_t = {"_p_ipmi_pet_t", "ipmi_pet_t *", 0, 0, (void*)"OpenIPMI::ipmi_pet_t", 0};
static swig_type_info _swigt__p_ipmi_sensor_id_t = {"_p_ipmi_sensor_id_t", "ipmi_sensor_id_t *", 0, 0, (void*)"OpenIPMI::ipmi_sensor_id_t", 0};
static swig_type_info _swigt__p_ipmi_sensor_t = {"_p_ipmi_sensor_t", "ipmi_sensor_t *", 0, 0, (void*)"OpenIPMI::ipmi_sensor_t", 0};
static swig_type_info _swigt__p_ipmi_sol_config_t = {"_p_ipmi_sol_config_t", "ipmi_sol_config_t *", 0, 0, (void*)"OpenIPMI::ipmi_sol_config_t", 0};
static swig_type_info _swigt__p_ipmi_sol_conn_t = {"_p_ipmi_sol_conn_t", "ipmi_sol_conn_t *", 0, 0, (void*)"OpenIPMI::ipmi_sol_conn_t", 0};
static swig_type_info _swigt__p_ipmi_solparm_t = {"_p_ipmi_solparm_t", "ipmi_solparm_t *", 0, 0, (void*)"OpenIPMI::ipmi_solparm_t", 0};
static swig_type_info _swigt__p_ipmi_timeout_t = {"_p_ipmi_timeout_t", "ipmi_timeout_t *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_ipmi_user_t = {"_p_ipmi_user_t", "ipmi_user_t *", 0, 0, (void*)"OpenIPMI::ipmi_user_t", 0};
static swig_type_info _swigt__p_p_char = {"_p_p_char", "char **", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_p_ipmi_args_t = {"_p_p_ipmi_args_t", "ipmi_args_t **", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_p_ipmi_fru_node_t = {"_p_p_ipmi_fru_node_t", "ipmi_fru_node_t **", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_strconstarray = {"_p_strconstarray", "strconstarray *|struct strconstarray *", 0, 0, (void*)"OpenIPMI::strconstarray", 0};
static swig_type_info _swigt__p_swig_cb = {"_p_swig_cb", "swig_cb *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_unsigned_int = {"_p_unsigned_int", "unsigned int *", 0, 0, (void*)0, 0};

static swig_type_info *swig_type_initial[] = {
  &_swigt__p_argarray,
  &_swigt__p_char,
  &_swigt__p_charbuf,
  &_swigt__p_double,
  &_swigt__p_iargarray,
  &_swigt__p_int,
  &_swigt__p_intarray,
  &_swigt__p_ipmi_args_t,
  &_swigt__p_ipmi_channel_access_t,
  &_swigt__p_ipmi_channel_info_t,
  &_swigt__p_ipmi_cmdlang_event_t,
  &_swigt__p_ipmi_cmdlang_t,
  &_swigt__p_ipmi_control_id_t,
  &_swigt__p_ipmi_control_t,
  &_swigt__p_ipmi_domain_id_t,
  &_swigt__p_ipmi_domain_t,
  &_swigt__p_ipmi_entity_id_t,
  &_swigt__p_ipmi_entity_t,
  &_swigt__p_ipmi_event_t,
  &_swigt__p_ipmi_fru_node_t,
  &_swigt__p_ipmi_fru_t,
  &_swigt__p_ipmi_lan_config_t,
  &_swigt__p_ipmi_lanparm_t,
  &_swigt__p_ipmi_mc_t,
  &_swigt__p_ipmi_mcid_t,
  &_swigt__p_ipmi_pef_config_t,
  &_swigt__p_ipmi_pef_t,
  &_swigt__p_ipmi_pet_t,
  &_swigt__p_ipmi_sensor_id_t,
  &_swigt__p_ipmi_sensor_t,
  &_swigt__p_ipmi_sol_config_t,
  &_swigt__p_ipmi_sol_conn_t,
  &_swigt__p_ipmi_solparm_t,
  &_swigt__p_ipmi_timeout_t,
  &_swigt__p_ipmi_user_t,
  &_swigt__p_p_char,
  &_swigt__p_p_ipmi_args_t,
  &_swigt__p_p_ipmi_fru_node_t,
  &_swigt__p_strconstarray,
  &_swigt__p_swig_cb,
  &_swigt__p_unsigned_int,
};

static swig_cast_info _swigc__p_argarray[] = {  {&_swigt__p_argarray, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_char[] = {  {&_swigt__p_char, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_charbuf[] = {  {&_swigt__p_charbuf, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_double[] = {  {&_swigt__p_double, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_iargarray[] = {  {&_swigt__p_iargarray, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_int[] = {  {&_swigt__p_int, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_intarray[] = {  {&_swigt__p_intarray, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_ipmi_args_t[] = {  {&_swigt__p_ipmi_args_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_ipmi_channel_access_t[] = {  {&_swigt__p_ipmi_channel_access_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_ipmi_channel_info_t[] = {  {&_swigt__p_ipmi_channel_info_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_ipmi_cmdlang_event_t[] = {  {&_swigt__p_ipmi_cmdlang_event_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_ipmi_cmdlang_t[] = {  {&_swigt__p_ipmi_cmdlang_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_ipmi_control_id_t[] = {  {&_swigt__p_ipmi_control_id_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_ipmi_control_t[] = {  {&_swigt__p_ipmi_control_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_ipmi_domain_id_t[] = {  {&_swigt__p_ipmi_domain_id_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_ipmi_domain_t[] = {  {&_swigt__p_ipmi_domain_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_ipmi_entity_id_t[] = {  {&_swigt__p_ipmi_entity_id_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_ipmi_entity_t[] = {  {&_swigt__p_ipmi_entity_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_ipmi_event_t[] = {  {&_swigt__p_ipmi_event_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_ipmi_fru_node_t[] = {  {&_swigt__p_ipmi_fru_node_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_ipmi_fru_t[] = {  {&_swigt__p_ipmi_fru_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_ipmi_lan_config_t[] = {  {&_swigt__p_ipmi_lan_config_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_ipmi_lanparm_t[] = {  {&_swigt__p_ipmi_lanparm_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_ipmi_mc_t[] = {  {&_swigt__p_ipmi_mc_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_ipmi_mcid_t[] = {  {&_swigt__p_ipmi_mcid_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_ipmi_pef_config_t[] = {  {&_swigt__p_ipmi_pef_config_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_ipmi_pef_t[] = {  {&_swigt__p_ipmi_pef_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_ipmi_pet_t[] = {  {&_swigt__p_ipmi_pet_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_ipmi_sensor_id_t[] = {  {&_swigt__p_ipmi_sensor_id_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_ipmi_sensor_t[] = {  {&_swigt__p_ipmi_sensor_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_ipmi_sol_config_t[] = {  {&_swigt__p_ipmi_sol_config_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_ipmi_sol_conn_t[] = {  {&_swigt__p_ipmi_sol_conn_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_ipmi_solparm_t[] = {  {&_swigt__p_ipmi_solparm_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_ipmi_timeout_t[] = {  {&_swigt__p_ipmi_timeout_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_ipmi_user_t[] = {  {&_swigt__p_ipmi_user_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_p_char[] = {  {&_swigt__p_p_char, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_p_ipmi_args_t[] = {  {&_swigt__p_p_ipmi_args_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_p_ipmi_fru_node_t[] = {  {&_swigt__p_p_ipmi_fru_node_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_strconstarray[] = {  {&_swigt__p_strconstarray, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_swig_cb[] = {  {&_swigt__p_swig_cb, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_unsigned_int[] = {  {&_swigt__p_unsigned_int, 0, 0, 0},{0, 0, 0, 0}};

static swig_cast_info *swig_cast_initial[] = {
  _swigc__p_argarray,
  _swigc__p_char,
  _swigc__p_charbuf,
  _swigc__p_double,
  _swigc__p_iargarray,
  _swigc__p_int,
  _swigc__p_intarray,
  _swigc__p_ipmi_args_t,
  _swigc__p_ipmi_channel_access_t,
  _swigc__p_ipmi_channel_info_t,
  _swigc__p_ipmi_cmdlang_event_t,
  _swigc__p_ipmi_cmdlang_t,
  _swigc__p_ipmi_control_id_t,
  _swigc__p_ipmi_control_t,
  _swigc__p_ipmi_domain_id_t,
  _swigc__p_ipmi_domain_t,
  _swigc__p_ipmi_entity_id_t,
  _swigc__p_ipmi_entity_t,
  _swigc__p_ipmi_event_t,
  _swigc__p_ipmi_fru_node_t,
  _swigc__p_ipmi_fru_t,
  _swigc__p_ipmi_lan_config_t,
  _swigc__p_ipmi_lanparm_t,
  _swigc__p_ipmi_mc_t,
  _swigc__p_ipmi_mcid_t,
  _swigc__p_ipmi_pef_config_t,
  _swigc__p_ipmi_pef_t,
  _swigc__p_ipmi_pet_t,
  _swigc__p_ipmi_sensor_id_t,
  _swigc__p_ipmi_sensor_t,
  _swigc__p_ipmi_sol_config_t,
  _swigc__p_ipmi_sol_conn_t,
  _swigc__p_ipmi_solparm_t,
  _swigc__p_ipmi_timeout_t,
  _swigc__p_ipmi_user_t,
  _swigc__p_p_char,
  _swigc__p_p_ipmi_args_t,
  _swigc__p_p_ipmi_fru_node_t,
  _swigc__p_strconstarray,
  _swigc__p_swig_cb,
  _swigc__p_unsigned_int,
};


/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (END) -------- */

static swig_constant_info swig_constants[] = {
{0,0,0,0,0,0}
};
#ifdef __cplusplus
}
#endif
static swig_variable_info swig_variables[] = {
{0,0,0,0}
};
static swig_command_info swig_commands[] = {
{"OpenIPMIc::strconstarray_val_set", _wrap_strconstarray_val_set},
{"OpenIPMIc::strconstarray_val_get", _wrap_strconstarray_val_get},
{"OpenIPMIc::strconstarray_len_set", _wrap_strconstarray_len_set},
{"OpenIPMIc::strconstarray_len_get", _wrap_strconstarray_len_get},
{"OpenIPMIc::new_strconstarray", _wrap_new_strconstarray},
{"OpenIPMIc::delete_strconstarray", _wrap_delete_strconstarray},
{"OpenIPMIc::argarray_val_set", _wrap_argarray_val_set},
{"OpenIPMIc::argarray_val_get", _wrap_argarray_val_get},
{"OpenIPMIc::argarray_len_set", _wrap_argarray_len_set},
{"OpenIPMIc::argarray_len_get", _wrap_argarray_len_get},
{"OpenIPMIc::new_argarray", _wrap_new_argarray},
{"OpenIPMIc::delete_argarray", _wrap_delete_argarray},
{"OpenIPMIc::iargarray_val_set", _wrap_iargarray_val_set},
{"OpenIPMIc::iargarray_val_get", _wrap_iargarray_val_get},
{"OpenIPMIc::iargarray_len_set", _wrap_iargarray_len_set},
{"OpenIPMIc::iargarray_len_get", _wrap_iargarray_len_get},
{"OpenIPMIc::new_iargarray", _wrap_new_iargarray},
{"OpenIPMIc::delete_iargarray", _wrap_delete_iargarray},
{"OpenIPMIc::ipmi_domain_t_get_name", _wrap_ipmi_domain_t_get_name},
{"OpenIPMIc::ipmi_domain_t_get_id", _wrap_ipmi_domain_t_get_id},
{"OpenIPMIc::ipmi_domain_t_get_guid", _wrap_ipmi_domain_t_get_guid},
{"OpenIPMIc::ipmi_domain_t_close", _wrap_ipmi_domain_t_close},
{"OpenIPMIc::ipmi_domain_t_add_connect_change_handler", _wrap_ipmi_domain_t_add_connect_change_handler},
{"OpenIPMIc::ipmi_domain_t_remove_connect_change_handler", _wrap_ipmi_domain_t_remove_connect_change_handler},
{"OpenIPMIc::ipmi_domain_t_iterate_connections", _wrap_ipmi_domain_t_iterate_connections},
{"OpenIPMIc::ipmi_domain_t_activate_connection", _wrap_ipmi_domain_t_activate_connection},
{"OpenIPMIc::ipmi_domain_t_is_connection_active", _wrap_ipmi_domain_t_is_connection_active},
{"OpenIPMIc::ipmi_domain_t_is_connection_up", _wrap_ipmi_domain_t_is_connection_up},
{"OpenIPMIc::ipmi_domain_t_num_connection_ports", _wrap_ipmi_domain_t_num_connection_ports},
{"OpenIPMIc::ipmi_domain_t_is_connection_port_up", _wrap_ipmi_domain_t_is_connection_port_up},
{"OpenIPMIc::ipmi_domain_t_get_port_info", _wrap_ipmi_domain_t_get_port_info},
{"OpenIPMIc::ipmi_domain_t_get_connection_args", _wrap_ipmi_domain_t_get_connection_args},
{"OpenIPMIc::ipmi_domain_t_get_connection_type", _wrap_ipmi_domain_t_get_connection_type},
{"OpenIPMIc::ipmi_domain_t_add_entity_update_handler", _wrap_ipmi_domain_t_add_entity_update_handler},
{"OpenIPMIc::ipmi_domain_t_remove_entity_update_handler", _wrap_ipmi_domain_t_remove_entity_update_handler},
{"OpenIPMIc::ipmi_domain_t_iterate_entities", _wrap_ipmi_domain_t_iterate_entities},
{"OpenIPMIc::ipmi_domain_t_add_mc_update_handler", _wrap_ipmi_domain_t_add_mc_update_handler},
{"OpenIPMIc::ipmi_domain_t_remove_mc_update_handler", _wrap_ipmi_domain_t_remove_mc_update_handler},
{"OpenIPMIc::ipmi_domain_t_iterate_mcs", _wrap_ipmi_domain_t_iterate_mcs},
{"OpenIPMIc::ipmi_domain_t_get_type", _wrap_ipmi_domain_t_get_type},
{"OpenIPMIc::ipmi_domain_t_start_ipmb_mc_scan", _wrap_ipmi_domain_t_start_ipmb_mc_scan},
{"OpenIPMIc::ipmi_domain_t_start_full_ipmb_scan", _wrap_ipmi_domain_t_start_full_ipmb_scan},
{"OpenIPMIc::ipmi_domain_t_send_command_addr", _wrap_ipmi_domain_t_send_command_addr},
{"OpenIPMIc::ipmi_domain_t_detect_presence_changes", _wrap_ipmi_domain_t_detect_presence_changes},
{"OpenIPMIc::ipmi_domain_t_set_sel_rescan_time", _wrap_ipmi_domain_t_set_sel_rescan_time},
{"OpenIPMIc::ipmi_domain_t_get_sel_rescan_time", _wrap_ipmi_domain_t_get_sel_rescan_time},
{"OpenIPMIc::ipmi_domain_t_set_ipmb_rescan_time", _wrap_ipmi_domain_t_set_ipmb_rescan_time},
{"OpenIPMIc::ipmi_domain_t_get_ipmb_rescan_time", _wrap_ipmi_domain_t_get_ipmb_rescan_time},
{"OpenIPMIc::ipmi_domain_t_add_event_handler", _wrap_ipmi_domain_t_add_event_handler},
{"OpenIPMIc::ipmi_domain_t_remove_event_handler", _wrap_ipmi_domain_t_remove_event_handler},
{"OpenIPMIc::ipmi_domain_t_first_event", _wrap_ipmi_domain_t_first_event},
{"OpenIPMIc::ipmi_domain_t_last_event", _wrap_ipmi_domain_t_last_event},
{"OpenIPMIc::ipmi_domain_t_next_event", _wrap_ipmi_domain_t_next_event},
{"OpenIPMIc::ipmi_domain_t_prev_event", _wrap_ipmi_domain_t_prev_event},
{"OpenIPMIc::ipmi_domain_t_sel_count", _wrap_ipmi_domain_t_sel_count},
{"OpenIPMIc::ipmi_domain_t_sel_entries_used", _wrap_ipmi_domain_t_sel_entries_used},
{"OpenIPMIc::ipmi_domain_t_reread_sels", _wrap_ipmi_domain_t_reread_sels},
{"OpenIPMIc::ipmi_domain_t_fru_alloc", _wrap_ipmi_domain_t_fru_alloc},
{"OpenIPMIc::ipmi_domain_t_get_pet", _wrap_ipmi_domain_t_get_pet},
{"OpenIPMIc::ipmi_domain_t_create_sol", _wrap_ipmi_domain_t_create_sol},
{"OpenIPMIc::delete_ipmi_domain_id_t", _wrap_delete_ipmi_domain_id_t},
{"OpenIPMIc::ipmi_domain_id_t_cmp", _wrap_ipmi_domain_id_t_cmp},
{"OpenIPMIc::ipmi_domain_id_t_to_domain", _wrap_ipmi_domain_id_t_to_domain},
{"OpenIPMIc::delete_ipmi_args_t", _wrap_delete_ipmi_args_t},
{"OpenIPMIc::ipmi_args_t_get_type", _wrap_ipmi_args_t_get_type},
{"OpenIPMIc::ipmi_args_t_get_val", _wrap_ipmi_args_t_get_val},
{"OpenIPMIc::ipmi_args_t_set_val", _wrap_ipmi_args_t_set_val},
{"OpenIPMIc::ipmi_entity_t_get_domain", _wrap_ipmi_entity_t_get_domain},
{"OpenIPMIc::ipmi_entity_t_get_name", _wrap_ipmi_entity_t_get_name},
{"OpenIPMIc::ipmi_entity_t_get_id", _wrap_ipmi_entity_t_get_id},
{"OpenIPMIc::ipmi_entity_t_iterate_children", _wrap_ipmi_entity_t_iterate_children},
{"OpenIPMIc::ipmi_entity_t_iterate_parents", _wrap_ipmi_entity_t_iterate_parents},
{"OpenIPMIc::ipmi_entity_t_iterate_sensors", _wrap_ipmi_entity_t_iterate_sensors},
{"OpenIPMIc::ipmi_entity_t_iterate_controls", _wrap_ipmi_entity_t_iterate_controls},
{"OpenIPMIc::ipmi_entity_t_add_presence_handler", _wrap_ipmi_entity_t_add_presence_handler},
{"OpenIPMIc::ipmi_entity_t_remove_presence_handler", _wrap_ipmi_entity_t_remove_presence_handler},
{"OpenIPMIc::ipmi_entity_t_add_sensor_update_handler", _wrap_ipmi_entity_t_add_sensor_update_handler},
{"OpenIPMIc::ipmi_entity_t_remove_sensor_update_handler", _wrap_ipmi_entity_t_remove_sensor_update_handler},
{"OpenIPMIc::ipmi_entity_t_add_control_update_handler", _wrap_ipmi_entity_t_add_control_update_handler},
{"OpenIPMIc::ipmi_entity_t_remove_control_update_handler", _wrap_ipmi_entity_t_remove_control_update_handler},
{"OpenIPMIc::ipmi_entity_t_add_fru_update_handler", _wrap_ipmi_entity_t_add_fru_update_handler},
{"OpenIPMIc::ipmi_entity_t_remove_fru_update_handler", _wrap_ipmi_entity_t_remove_fru_update_handler},
{"OpenIPMIc::ipmi_entity_t_add_fru_update_werr_handler", _wrap_ipmi_entity_t_add_fru_update_werr_handler},
{"OpenIPMIc::ipmi_entity_t_remove_fru_update_werr_handler", _wrap_ipmi_entity_t_remove_fru_update_werr_handler},
{"OpenIPMIc::ipmi_entity_t_get_type", _wrap_ipmi_entity_t_get_type},
{"OpenIPMIc::ipmi_entity_t_is_fru", _wrap_ipmi_entity_t_is_fru},
{"OpenIPMIc::ipmi_entity_t_get_id_string", _wrap_ipmi_entity_t_get_id_string},
{"OpenIPMIc::ipmi_entity_t_get_entity_id", _wrap_ipmi_entity_t_get_entity_id},
{"OpenIPMIc::ipmi_entity_t_get_entity_id_string", _wrap_ipmi_entity_t_get_entity_id_string},
{"OpenIPMIc::ipmi_entity_t_get_entity_instance", _wrap_ipmi_entity_t_get_entity_instance},
{"OpenIPMIc::ipmi_entity_t_get_entity_device_channel", _wrap_ipmi_entity_t_get_entity_device_channel},
{"OpenIPMIc::ipmi_entity_t_get_entity_device_address", _wrap_ipmi_entity_t_get_entity_device_address},
{"OpenIPMIc::ipmi_entity_t_get_fru", _wrap_ipmi_entity_t_get_fru},
{"OpenIPMIc::ipmi_entity_t_get_presence_sensor_always_there", _wrap_ipmi_entity_t_get_presence_sensor_always_there},
{"OpenIPMIc::ipmi_entity_t_is_child", _wrap_ipmi_entity_t_is_child},
{"OpenIPMIc::ipmi_entity_t_is_parent", _wrap_ipmi_entity_t_is_parent},
{"OpenIPMIc::ipmi_entity_t_get_channel", _wrap_ipmi_entity_t_get_channel},
{"OpenIPMIc::ipmi_entity_t_get_lun", _wrap_ipmi_entity_t_get_lun},
{"OpenIPMIc::ipmi_entity_t_get_oem", _wrap_ipmi_entity_t_get_oem},
{"OpenIPMIc::ipmi_entity_t_get_access_address", _wrap_ipmi_entity_t_get_access_address},
{"OpenIPMIc::ipmi_entity_t_get_private_bus_id", _wrap_ipmi_entity_t_get_private_bus_id},
{"OpenIPMIc::ipmi_entity_t_get_device_type", _wrap_ipmi_entity_t_get_device_type},
{"OpenIPMIc::ipmi_entity_t_get_device_modifier", _wrap_ipmi_entity_t_get_device_modifier},
{"OpenIPMIc::ipmi_entity_t_get_slave_address", _wrap_ipmi_entity_t_get_slave_address},
{"OpenIPMIc::ipmi_entity_t_get_mc_id", _wrap_ipmi_entity_t_get_mc_id},
{"OpenIPMIc::ipmi_entity_t_get_is_logical_fru", _wrap_ipmi_entity_t_get_is_logical_fru},
{"OpenIPMIc::ipmi_entity_t_get_fru_device_id", _wrap_ipmi_entity_t_get_fru_device_id},
{"OpenIPMIc::ipmi_entity_t_get_ACPI_system_power_notify_required", _wrap_ipmi_entity_t_get_ACPI_system_power_notify_required},
{"OpenIPMIc::ipmi_entity_t_get_ACPI_device_power_notify_required", _wrap_ipmi_entity_t_get_ACPI_device_power_notify_required},
{"OpenIPMIc::ipmi_entity_t_get_controller_logs_init_agent_errors", _wrap_ipmi_entity_t_get_controller_logs_init_agent_errors},
{"OpenIPMIc::ipmi_entity_t_get_log_init_agent_errors_accessing", _wrap_ipmi_entity_t_get_log_init_agent_errors_accessing},
{"OpenIPMIc::ipmi_entity_t_get_global_init", _wrap_ipmi_entity_t_get_global_init},
{"OpenIPMIc::ipmi_entity_t_get_chassis_device", _wrap_ipmi_entity_t_get_chassis_device},
{"OpenIPMIc::ipmi_entity_t_get_bridge", _wrap_ipmi_entity_t_get_bridge},
{"OpenIPMIc::ipmi_entity_t_get_IPMB_event_generator", _wrap_ipmi_entity_t_get_IPMB_event_generator},
{"OpenIPMIc::ipmi_entity_t_get_IPMB_event_receiver", _wrap_ipmi_entity_t_get_IPMB_event_receiver},
{"OpenIPMIc::ipmi_entity_t_get_FRU_inventory_device", _wrap_ipmi_entity_t_get_FRU_inventory_device},
{"OpenIPMIc::ipmi_entity_t_get_SEL_device", _wrap_ipmi_entity_t_get_SEL_device},
{"OpenIPMIc::ipmi_entity_t_get_SDR_repository_device", _wrap_ipmi_entity_t_get_SDR_repository_device},
{"OpenIPMIc::ipmi_entity_t_get_sensor_device", _wrap_ipmi_entity_t_get_sensor_device},
{"OpenIPMIc::ipmi_entity_t_get_address_span", _wrap_ipmi_entity_t_get_address_span},
{"OpenIPMIc::ipmi_entity_t_get_dlr_id", _wrap_ipmi_entity_t_get_dlr_id},
{"OpenIPMIc::ipmi_entity_t_is_present", _wrap_ipmi_entity_t_is_present},
{"OpenIPMIc::ipmi_entity_t_get_physical_slot_num", _wrap_ipmi_entity_t_get_physical_slot_num},
{"OpenIPMIc::ipmi_entity_t_is_hot_swappable", _wrap_ipmi_entity_t_is_hot_swappable},
{"OpenIPMIc::ipmi_entity_t_supports_managed_hot_swap", _wrap_ipmi_entity_t_supports_managed_hot_swap},
{"OpenIPMIc::ipmi_entity_t_add_hot_swap_handler", _wrap_ipmi_entity_t_add_hot_swap_handler},
{"OpenIPMIc::ipmi_entity_t_remove_hot_swap_handler", _wrap_ipmi_entity_t_remove_hot_swap_handler},
{"OpenIPMIc::ipmi_entity_t_get_hot_swap_state", _wrap_ipmi_entity_t_get_hot_swap_state},
{"OpenIPMIc::ipmi_entity_t_supports_auto_activate_time", _wrap_ipmi_entity_t_supports_auto_activate_time},
{"OpenIPMIc::ipmi_entity_t_get_auto_activate_time", _wrap_ipmi_entity_t_get_auto_activate_time},
{"OpenIPMIc::ipmi_entity_t_set_auto_activate_time", _wrap_ipmi_entity_t_set_auto_activate_time},
{"OpenIPMIc::ipmi_entity_t_supports_auto_deactivate_time", _wrap_ipmi_entity_t_supports_auto_deactivate_time},
{"OpenIPMIc::ipmi_entity_t_get_auto_deactivate_time", _wrap_ipmi_entity_t_get_auto_deactivate_time},
{"OpenIPMIc::ipmi_entity_t_set_auto_deactivate_time", _wrap_ipmi_entity_t_set_auto_deactivate_time},
{"OpenIPMIc::ipmi_entity_t_set_activation_requested", _wrap_ipmi_entity_t_set_activation_requested},
{"OpenIPMIc::ipmi_entity_t_activate", _wrap_ipmi_entity_t_activate},
{"OpenIPMIc::ipmi_entity_t_deactivate", _wrap_ipmi_entity_t_deactivate},
{"OpenIPMIc::ipmi_entity_t_check_hot_swap_state", _wrap_ipmi_entity_t_check_hot_swap_state},
{"OpenIPMIc::delete_ipmi_entity_id_t", _wrap_delete_ipmi_entity_id_t},
{"OpenIPMIc::ipmi_entity_id_t_cmp", _wrap_ipmi_entity_id_t_cmp},
{"OpenIPMIc::ipmi_entity_id_t_to_entity", _wrap_ipmi_entity_id_t_to_entity},
{"OpenIPMIc::delete_ipmi_fru_t", _wrap_delete_ipmi_fru_t},
{"OpenIPMIc::ipmi_fru_t_get_domain_id", _wrap_ipmi_fru_t_get_domain_id},
{"OpenIPMIc::ipmi_fru_t_str_to_index", _wrap_ipmi_fru_t_str_to_index},
{"OpenIPMIc::ipmi_fru_t_get", _wrap_ipmi_fru_t_get},
{"OpenIPMIc::ipmi_fru_t_get_num_multi_records", _wrap_ipmi_fru_t_get_num_multi_records},
{"OpenIPMIc::ipmi_fru_t_get_multirecord", _wrap_ipmi_fru_t_get_multirecord},
{"OpenIPMIc::ipmi_fru_t_set", _wrap_ipmi_fru_t_set},
{"OpenIPMIc::ipmi_fru_t_set_array", _wrap_ipmi_fru_t_set_array},
{"OpenIPMIc::ipmi_fru_t_set_multirecord", _wrap_ipmi_fru_t_set_multirecord},
{"OpenIPMIc::ipmi_fru_t_set_multirecord_array", _wrap_ipmi_fru_t_set_multirecord_array},
{"OpenIPMIc::ipmi_fru_t_add_area", _wrap_ipmi_fru_t_add_area},
{"OpenIPMIc::ipmi_fru_t_delete_area", _wrap_ipmi_fru_t_delete_area},
{"OpenIPMIc::ipmi_fru_t_area_get_offset", _wrap_ipmi_fru_t_area_get_offset},
{"OpenIPMIc::ipmi_fru_t_area_get_length", _wrap_ipmi_fru_t_area_get_length},
{"OpenIPMIc::ipmi_fru_t_area_set_offset", _wrap_ipmi_fru_t_area_set_offset},
{"OpenIPMIc::ipmi_fru_t_area_set_length", _wrap_ipmi_fru_t_area_set_length},
{"OpenIPMIc::ipmi_fru_t_area_get_used_length", _wrap_ipmi_fru_t_area_get_used_length},
{"OpenIPMIc::ipmi_fru_t_write", _wrap_ipmi_fru_t_write},
{"OpenIPMIc::ipmi_fru_t_multi_record_get_root_node", _wrap_ipmi_fru_t_multi_record_get_root_node},
{"OpenIPMIc::ipmi_fru_t_get_root_node", _wrap_ipmi_fru_t_get_root_node},
{"OpenIPMIc::delete_ipmi_fru_node_t", _wrap_delete_ipmi_fru_node_t},
{"OpenIPMIc::ipmi_fru_node_t_get_field", _wrap_ipmi_fru_node_t_get_field},
{"OpenIPMIc::ipmi_fru_node_t_get_enum_val", _wrap_ipmi_fru_node_t_get_enum_val},
{"OpenIPMIc::ipmi_fru_node_t_set_field", _wrap_ipmi_fru_node_t_set_field},
{"OpenIPMIc::ipmi_fru_node_t_settable", _wrap_ipmi_fru_node_t_settable},
{"OpenIPMIc::ipmi_fru_node_t_get_subtype", _wrap_ipmi_fru_node_t_get_subtype},
{"OpenIPMIc::ipmi_mc_t_get_domain", _wrap_ipmi_mc_t_get_domain},
{"OpenIPMIc::ipmi_mc_t_get_name", _wrap_ipmi_mc_t_get_name},
{"OpenIPMIc::ipmi_mc_t_get_id", _wrap_ipmi_mc_t_get_id},
{"OpenIPMIc::ipmi_mc_t_get_guid", _wrap_ipmi_mc_t_get_guid},
{"OpenIPMIc::ipmi_mc_t_provides_device_sdrs", _wrap_ipmi_mc_t_provides_device_sdrs},
{"OpenIPMIc::ipmi_mc_t_device_available", _wrap_ipmi_mc_t_device_available},
{"OpenIPMIc::ipmi_mc_t_chassis_support", _wrap_ipmi_mc_t_chassis_support},
{"OpenIPMIc::ipmi_mc_t_bridge_support", _wrap_ipmi_mc_t_bridge_support},
{"OpenIPMIc::ipmi_mc_t_ipmb_event_generator_support", _wrap_ipmi_mc_t_ipmb_event_generator_support},
{"OpenIPMIc::ipmi_mc_t_ipmb_event_receiver_support", _wrap_ipmi_mc_t_ipmb_event_receiver_support},
{"OpenIPMIc::ipmi_mc_t_fru_inventory_support", _wrap_ipmi_mc_t_fru_inventory_support},
{"OpenIPMIc::ipmi_mc_t_sel_device_support", _wrap_ipmi_mc_t_sel_device_support},
{"OpenIPMIc::ipmi_mc_t_sdr_repository_support", _wrap_ipmi_mc_t_sdr_repository_support},
{"OpenIPMIc::ipmi_mc_t_sensor_device_support", _wrap_ipmi_mc_t_sensor_device_support},
{"OpenIPMIc::ipmi_mc_t_device_id", _wrap_ipmi_mc_t_device_id},
{"OpenIPMIc::ipmi_mc_t_device_revision", _wrap_ipmi_mc_t_device_revision},
{"OpenIPMIc::ipmi_mc_t_major_fw_revision", _wrap_ipmi_mc_t_major_fw_revision},
{"OpenIPMIc::ipmi_mc_t_minor_fw_revision", _wrap_ipmi_mc_t_minor_fw_revision},
{"OpenIPMIc::ipmi_mc_t_major_version", _wrap_ipmi_mc_t_major_version},
{"OpenIPMIc::ipmi_mc_t_minor_version", _wrap_ipmi_mc_t_minor_version},
{"OpenIPMIc::ipmi_mc_t_manufacturer_id", _wrap_ipmi_mc_t_manufacturer_id},
{"OpenIPMIc::ipmi_mc_t_product_id", _wrap_ipmi_mc_t_product_id},
{"OpenIPMIc::ipmi_mc_t_aux_fw_revision", _wrap_ipmi_mc_t_aux_fw_revision},
{"OpenIPMIc::ipmi_mc_t_is_active", _wrap_ipmi_mc_t_is_active},
{"OpenIPMIc::ipmi_mc_t_add_active_handler", _wrap_ipmi_mc_t_add_active_handler},
{"OpenIPMIc::ipmi_mc_t_remove_active_handler", _wrap_ipmi_mc_t_remove_active_handler},
{"OpenIPMIc::ipmi_mc_t_add_fully_up_handler", _wrap_ipmi_mc_t_add_fully_up_handler},
{"OpenIPMIc::ipmi_mc_t_remove_fully_up_handler", _wrap_ipmi_mc_t_remove_fully_up_handler},
{"OpenIPMIc::ipmi_mc_t_send_command", _wrap_ipmi_mc_t_send_command},
{"OpenIPMIc::ipmi_mc_t_reset", _wrap_ipmi_mc_t_reset},
{"OpenIPMIc::ipmi_mc_t_get_events_enable", _wrap_ipmi_mc_t_get_events_enable},
{"OpenIPMIc::ipmi_mc_t_set_events_enable", _wrap_ipmi_mc_t_set_events_enable},
{"OpenIPMIc::ipmi_mc_t_get_event_log_enable", _wrap_ipmi_mc_t_get_event_log_enable},
{"OpenIPMIc::ipmi_mc_t_set_event_log_enable", _wrap_ipmi_mc_t_set_event_log_enable},
{"OpenIPMIc::ipmi_mc_t_reread_sensors", _wrap_ipmi_mc_t_reread_sensors},
{"OpenIPMIc::ipmi_mc_t_set_sel_rescan_time", _wrap_ipmi_mc_t_set_sel_rescan_time},
{"OpenIPMIc::ipmi_mc_t_get_sel_rescan_time", _wrap_ipmi_mc_t_get_sel_rescan_time},
{"OpenIPMIc::ipmi_mc_t_reread_sel", _wrap_ipmi_mc_t_reread_sel},
{"OpenIPMIc::ipmi_mc_t_get_current_sel_time", _wrap_ipmi_mc_t_get_current_sel_time},
{"OpenIPMIc::ipmi_mc_t_first_event", _wrap_ipmi_mc_t_first_event},
{"OpenIPMIc::ipmi_mc_t_last_event", _wrap_ipmi_mc_t_last_event},
{"OpenIPMIc::ipmi_mc_t_next_event", _wrap_ipmi_mc_t_next_event},
{"OpenIPMIc::ipmi_mc_t_prev_event", _wrap_ipmi_mc_t_prev_event},
{"OpenIPMIc::ipmi_mc_t_event_by_recid", _wrap_ipmi_mc_t_event_by_recid},
{"OpenIPMIc::ipmi_mc_t_sel_count", _wrap_ipmi_mc_t_sel_count},
{"OpenIPMIc::ipmi_mc_t_sel_entries_used", _wrap_ipmi_mc_t_sel_entries_used},
{"OpenIPMIc::ipmi_mc_t_sel_get_major_version", _wrap_ipmi_mc_t_sel_get_major_version},
{"OpenIPMIc::ipmi_mc_t_sel_get_minor_version", _wrap_ipmi_mc_t_sel_get_minor_version},
{"OpenIPMIc::ipmi_mc_t_sel_get_num_entries", _wrap_ipmi_mc_t_sel_get_num_entries},
{"OpenIPMIc::ipmi_mc_t_sel_get_free_bytes", _wrap_ipmi_mc_t_sel_get_free_bytes},
{"OpenIPMIc::ipmi_mc_t_sel_get_overflow", _wrap_ipmi_mc_t_sel_get_overflow},
{"OpenIPMIc::ipmi_mc_t_sel_get_supports_delete_sel", _wrap_ipmi_mc_t_sel_get_supports_delete_sel},
{"OpenIPMIc::ipmi_mc_t_sel_get_supports_partial_add_sel", _wrap_ipmi_mc_t_sel_get_supports_partial_add_sel},
{"OpenIPMIc::ipmi_mc_t_sel_get_supports_reserve_sel", _wrap_ipmi_mc_t_sel_get_supports_reserve_sel},
{"OpenIPMIc::ipmi_mc_t_sel_get_supports_get_sel_allocation", _wrap_ipmi_mc_t_sel_get_supports_get_sel_allocation},
{"OpenIPMIc::ipmi_mc_t_sel_get_last_addition_timestamp", _wrap_ipmi_mc_t_sel_get_last_addition_timestamp},
{"OpenIPMIc::ipmi_mc_t_channel_get_info", _wrap_ipmi_mc_t_channel_get_info},
{"OpenIPMIc::ipmi_mc_t_channel_get_access", _wrap_ipmi_mc_t_channel_get_access},
{"OpenIPMIc::ipmi_mc_t_channel_set_access", _wrap_ipmi_mc_t_channel_set_access},
{"OpenIPMIc::ipmi_mc_t_get_users", _wrap_ipmi_mc_t_get_users},
{"OpenIPMIc::ipmi_mc_t_set_user", _wrap_ipmi_mc_t_set_user},
{"OpenIPMIc::ipmi_mc_t_get_lanparm", _wrap_ipmi_mc_t_get_lanparm},
{"OpenIPMIc::ipmi_mc_t_get_pef", _wrap_ipmi_mc_t_get_pef},
{"OpenIPMIc::ipmi_mc_t_get_pet", _wrap_ipmi_mc_t_get_pet},
{"OpenIPMIc::ipmi_mc_t_get_solparm", _wrap_ipmi_mc_t_get_solparm},
{"OpenIPMIc::delete_ipmi_mcid_t", _wrap_delete_ipmi_mcid_t},
{"OpenIPMIc::ipmi_mcid_t_cmp", _wrap_ipmi_mcid_t_cmp},
{"OpenIPMIc::ipmi_mcid_t_to_mc", _wrap_ipmi_mcid_t_to_mc},
{"OpenIPMIc::delete_ipmi_event_t", _wrap_delete_ipmi_event_t},
{"OpenIPMIc::ipmi_event_t_delete", _wrap_ipmi_event_t_delete},
{"OpenIPMIc::ipmi_event_t_get_mc_id", _wrap_ipmi_event_t_get_mc_id},
{"OpenIPMIc::ipmi_event_t_get_record_id", _wrap_ipmi_event_t_get_record_id},
{"OpenIPMIc::ipmi_event_t_get_type", _wrap_ipmi_event_t_get_type},
{"OpenIPMIc::ipmi_event_t_get_timestamp", _wrap_ipmi_event_t_get_timestamp},
{"OpenIPMIc::ipmi_event_t_get_data", _wrap_ipmi_event_t_get_data},
{"OpenIPMIc::ipmi_event_t_call_handler", _wrap_ipmi_event_t_call_handler},
{"OpenIPMIc::ipmi_sensor_t_get_name", _wrap_ipmi_sensor_t_get_name},
{"OpenIPMIc::ipmi_sensor_t_get_id", _wrap_ipmi_sensor_t_get_id},
{"OpenIPMIc::ipmi_sensor_t_add_event_handler", _wrap_ipmi_sensor_t_add_event_handler},
{"OpenIPMIc::ipmi_sensor_t_remove_event_handler", _wrap_ipmi_sensor_t_remove_event_handler},
{"OpenIPMIc::ipmi_sensor_t_set_event_enables", _wrap_ipmi_sensor_t_set_event_enables},
{"OpenIPMIc::ipmi_sensor_t_enable_events", _wrap_ipmi_sensor_t_enable_events},
{"OpenIPMIc::ipmi_sensor_t_disable_events", _wrap_ipmi_sensor_t_disable_events},
{"OpenIPMIc::ipmi_sensor_t_get_event_enables", _wrap_ipmi_sensor_t_get_event_enables},
{"OpenIPMIc::ipmi_sensor_t_rearm", _wrap_ipmi_sensor_t_rearm},
{"OpenIPMIc::ipmi_sensor_t_get_hysteresis", _wrap_ipmi_sensor_t_get_hysteresis},
{"OpenIPMIc::ipmi_sensor_t_set_hysteresis", _wrap_ipmi_sensor_t_set_hysteresis},
{"OpenIPMIc::ipmi_sensor_t_get_default_thresholds", _wrap_ipmi_sensor_t_get_default_thresholds},
{"OpenIPMIc::ipmi_sensor_t_set_thresholds", _wrap_ipmi_sensor_t_set_thresholds},
{"OpenIPMIc::ipmi_sensor_t_get_thresholds", _wrap_ipmi_sensor_t_get_thresholds},
{"OpenIPMIc::ipmi_sensor_t_get_value", _wrap_ipmi_sensor_t_get_value},
{"OpenIPMIc::ipmi_sensor_t_get_lun", _wrap_ipmi_sensor_t_get_lun},
{"OpenIPMIc::ipmi_sensor_t_get_num", _wrap_ipmi_sensor_t_get_num},
{"OpenIPMIc::ipmi_sensor_t_get_sensor_type_string", _wrap_ipmi_sensor_t_get_sensor_type_string},
{"OpenIPMIc::ipmi_sensor_t_get_sensor_type", _wrap_ipmi_sensor_t_get_sensor_type},
{"OpenIPMIc::ipmi_sensor_t_get_event_reading_type_string", _wrap_ipmi_sensor_t_get_event_reading_type_string},
{"OpenIPMIc::ipmi_sensor_t_get_event_reading_type", _wrap_ipmi_sensor_t_get_event_reading_type},
{"OpenIPMIc::ipmi_sensor_t_get_rate_unit_string", _wrap_ipmi_sensor_t_get_rate_unit_string},
{"OpenIPMIc::ipmi_sensor_t_get_rate_unit", _wrap_ipmi_sensor_t_get_rate_unit},
{"OpenIPMIc::ipmi_sensor_t_get_base_unit_string", _wrap_ipmi_sensor_t_get_base_unit_string},
{"OpenIPMIc::ipmi_sensor_t_get_base_unit", _wrap_ipmi_sensor_t_get_base_unit},
{"OpenIPMIc::ipmi_sensor_t_get_modifier_unit_string", _wrap_ipmi_sensor_t_get_modifier_unit_string},
{"OpenIPMIc::ipmi_sensor_t_get_modifier_unit", _wrap_ipmi_sensor_t_get_modifier_unit},
{"OpenIPMIc::ipmi_sensor_t_get_modifier_unit_use", _wrap_ipmi_sensor_t_get_modifier_unit_use},
{"OpenIPMIc::ipmi_sensor_t_get_percentage", _wrap_ipmi_sensor_t_get_percentage},
{"OpenIPMIc::ipmi_sensor_t_reading_name_string", _wrap_ipmi_sensor_t_reading_name_string},
{"OpenIPMIc::ipmi_sensor_t_get_entity_id", _wrap_ipmi_sensor_t_get_entity_id},
{"OpenIPMIc::ipmi_sensor_t_get_entity_instance", _wrap_ipmi_sensor_t_get_entity_instance},
{"OpenIPMIc::ipmi_sensor_t_get_entity", _wrap_ipmi_sensor_t_get_entity},
{"OpenIPMIc::ipmi_sensor_t_get_sensor_init_scanning", _wrap_ipmi_sensor_t_get_sensor_init_scanning},
{"OpenIPMIc::ipmi_sensor_t_get_sensor_init_events", _wrap_ipmi_sensor_t_get_sensor_init_events},
{"OpenIPMIc::ipmi_sensor_t_get_sensor_init_thresholds", _wrap_ipmi_sensor_t_get_sensor_init_thresholds},
{"OpenIPMIc::ipmi_sensor_t_get_sensor_init_hysteresis", _wrap_ipmi_sensor_t_get_sensor_init_hysteresis},
{"OpenIPMIc::ipmi_sensor_t_get_sensor_init_type", _wrap_ipmi_sensor_t_get_sensor_init_type},
{"OpenIPMIc::ipmi_sensor_t_get_sensor_init_pu_events", _wrap_ipmi_sensor_t_get_sensor_init_pu_events},
{"OpenIPMIc::ipmi_sensor_t_get_sensor_init_pu_scanning", _wrap_ipmi_sensor_t_get_sensor_init_pu_scanning},
{"OpenIPMIc::ipmi_sensor_t_get_ignore_if_no_entity", _wrap_ipmi_sensor_t_get_ignore_if_no_entity},
{"OpenIPMIc::ipmi_sensor_t_get_supports_auto_rearm", _wrap_ipmi_sensor_t_get_supports_auto_rearm},
{"OpenIPMIc::ipmi_sensor_t_get_threshold_access", _wrap_ipmi_sensor_t_get_threshold_access},
{"OpenIPMIc::ipmi_sensor_t_get_hysteresis_support", _wrap_ipmi_sensor_t_get_hysteresis_support},
{"OpenIPMIc::ipmi_sensor_t_get_event_support", _wrap_ipmi_sensor_t_get_event_support},
{"OpenIPMIc::ipmi_sensor_t_get_sensor_direction", _wrap_ipmi_sensor_t_get_sensor_direction},
{"OpenIPMIc::ipmi_sensor_t_is_readable", _wrap_ipmi_sensor_t_is_readable},
{"OpenIPMIc::ipmi_sensor_t_threshold_event_supported", _wrap_ipmi_sensor_t_threshold_event_supported},
{"OpenIPMIc::ipmi_sensor_t_threshold_settable", _wrap_ipmi_sensor_t_threshold_settable},
{"OpenIPMIc::ipmi_sensor_t_threshold_readable", _wrap_ipmi_sensor_t_threshold_readable},
{"OpenIPMIc::ipmi_sensor_t_threshold_reading_supported", _wrap_ipmi_sensor_t_threshold_reading_supported},
{"OpenIPMIc::ipmi_sensor_t_discrete_event_supported", _wrap_ipmi_sensor_t_discrete_event_supported},
{"OpenIPMIc::ipmi_sensor_t_discrete_event_readable", _wrap_ipmi_sensor_t_discrete_event_readable},
{"OpenIPMIc::ipmi_sensor_t_get_tolerance", _wrap_ipmi_sensor_t_get_tolerance},
{"OpenIPMIc::ipmi_sensor_t_get_accuracy", _wrap_ipmi_sensor_t_get_accuracy},
{"OpenIPMIc::ipmi_sensor_t_get_normal_min_specified", _wrap_ipmi_sensor_t_get_normal_min_specified},
{"OpenIPMIc::ipmi_sensor_t_get_normal_min", _wrap_ipmi_sensor_t_get_normal_min},
{"OpenIPMIc::ipmi_sensor_t_get_normal_max_specified", _wrap_ipmi_sensor_t_get_normal_max_specified},
{"OpenIPMIc::ipmi_sensor_t_get_normal_max", _wrap_ipmi_sensor_t_get_normal_max},
{"OpenIPMIc::ipmi_sensor_t_get_nominal_reading_specified", _wrap_ipmi_sensor_t_get_nominal_reading_specified},
{"OpenIPMIc::ipmi_sensor_t_get_nominal_reading", _wrap_ipmi_sensor_t_get_nominal_reading},
{"OpenIPMIc::ipmi_sensor_t_get_sensor_max", _wrap_ipmi_sensor_t_get_sensor_max},
{"OpenIPMIc::ipmi_sensor_t_get_sensor_min", _wrap_ipmi_sensor_t_get_sensor_min},
{"OpenIPMIc::ipmi_sensor_t_get_oem1", _wrap_ipmi_sensor_t_get_oem1},
{"OpenIPMIc::ipmi_sensor_t_get_sensor_id", _wrap_ipmi_sensor_t_get_sensor_id},
{"OpenIPMIc::ipmi_sensor_t_get_mc", _wrap_ipmi_sensor_t_get_mc},
{"OpenIPMIc::delete_ipmi_sensor_id_t", _wrap_delete_ipmi_sensor_id_t},
{"OpenIPMIc::ipmi_sensor_id_t_cmp", _wrap_ipmi_sensor_id_t_cmp},
{"OpenIPMIc::ipmi_sensor_id_t_to_sensor", _wrap_ipmi_sensor_id_t_to_sensor},
{"OpenIPMIc::ipmi_control_t_get_name", _wrap_ipmi_control_t_get_name},
{"OpenIPMIc::ipmi_control_t_get_id", _wrap_ipmi_control_t_get_id},
{"OpenIPMIc::ipmi_control_t_get_type_string", _wrap_ipmi_control_t_get_type_string},
{"OpenIPMIc::ipmi_control_t_get_type", _wrap_ipmi_control_t_get_type},
{"OpenIPMIc::ipmi_control_t_get_entity_id", _wrap_ipmi_control_t_get_entity_id},
{"OpenIPMIc::ipmi_control_t_get_entity_instance", _wrap_ipmi_control_t_get_entity_instance},
{"OpenIPMIc::ipmi_control_t_get_entity", _wrap_ipmi_control_t_get_entity},
{"OpenIPMIc::ipmi_control_t_is_settable", _wrap_ipmi_control_t_is_settable},
{"OpenIPMIc::ipmi_control_t_is_readable", _wrap_ipmi_control_t_is_readable},
{"OpenIPMIc::ipmi_control_t_get_ignore_if_no_entity", _wrap_ipmi_control_t_get_ignore_if_no_entity},
{"OpenIPMIc::ipmi_control_t_get_control_id", _wrap_ipmi_control_t_get_control_id},
{"OpenIPMIc::ipmi_control_t_has_events", _wrap_ipmi_control_t_has_events},
{"OpenIPMIc::ipmi_control_t_get_num_vals", _wrap_ipmi_control_t_get_num_vals},
{"OpenIPMIc::ipmi_control_t_set_val", _wrap_ipmi_control_t_set_val},
{"OpenIPMIc::ipmi_control_t_get_val", _wrap_ipmi_control_t_get_val},
{"OpenIPMIc::ipmi_control_t_add_event_handler", _wrap_ipmi_control_t_add_event_handler},
{"OpenIPMIc::ipmi_control_t_remove_event_handler", _wrap_ipmi_control_t_remove_event_handler},
{"OpenIPMIc::ipmi_control_t_light_set_with_setting", _wrap_ipmi_control_t_light_set_with_setting},
{"OpenIPMIc::ipmi_control_t_light_is_color_supported", _wrap_ipmi_control_t_light_is_color_supported},
{"OpenIPMIc::ipmi_control_t_light_has_local_control", _wrap_ipmi_control_t_light_has_local_control},
{"OpenIPMIc::ipmi_control_t_set_light", _wrap_ipmi_control_t_set_light},
{"OpenIPMIc::ipmi_control_t_get_light", _wrap_ipmi_control_t_get_light},
{"OpenIPMIc::ipmi_control_t_get_num_light_values", _wrap_ipmi_control_t_get_num_light_values},
{"OpenIPMIc::ipmi_control_t_get_num_light_transitions", _wrap_ipmi_control_t_get_num_light_transitions},
{"OpenIPMIc::ipmi_control_t_get_light_color", _wrap_ipmi_control_t_get_light_color},
{"OpenIPMIc::ipmi_control_t_get_light_color_time", _wrap_ipmi_control_t_get_light_color_time},
{"OpenIPMIc::ipmi_control_t_identifier_set_val", _wrap_ipmi_control_t_identifier_set_val},
{"OpenIPMIc::ipmi_control_t_identifier_get_val", _wrap_ipmi_control_t_identifier_get_val},
{"OpenIPMIc::ipmi_control_t_identifier_get_max_length", _wrap_ipmi_control_t_identifier_get_max_length},
{"OpenIPMIc::delete_ipmi_control_id_t", _wrap_delete_ipmi_control_id_t},
{"OpenIPMIc::ipmi_control_id_t_cmp", _wrap_ipmi_control_id_t_cmp},
{"OpenIPMIc::ipmi_control_id_t_to_control", _wrap_ipmi_control_id_t_to_control},
{"OpenIPMIc::delete_ipmi_channel_info_t", _wrap_delete_ipmi_channel_info_t},
{"OpenIPMIc::ipmi_channel_info_t_copy", _wrap_ipmi_channel_info_t_copy},
{"OpenIPMIc::ipmi_channel_info_t_get_channel", _wrap_ipmi_channel_info_t_get_channel},
{"OpenIPMIc::ipmi_channel_info_t_get_medium", _wrap_ipmi_channel_info_t_get_medium},
{"OpenIPMIc::ipmi_channel_info_t_get_protocol_type", _wrap_ipmi_channel_info_t_get_protocol_type},
{"OpenIPMIc::ipmi_channel_info_t_get_session_support", _wrap_ipmi_channel_info_t_get_session_support},
{"OpenIPMIc::ipmi_channel_info_t_get_vendor_id", _wrap_ipmi_channel_info_t_get_vendor_id},
{"OpenIPMIc::ipmi_channel_info_t_get_aux_info", _wrap_ipmi_channel_info_t_get_aux_info},
{"OpenIPMIc::delete_ipmi_channel_access_t", _wrap_delete_ipmi_channel_access_t},
{"OpenIPMIc::ipmi_channel_access_t_copy", _wrap_ipmi_channel_access_t_copy},
{"OpenIPMIc::ipmi_channel_access_t_get_channel", _wrap_ipmi_channel_access_t_get_channel},
{"OpenIPMIc::ipmi_channel_access_t_get_alerting_enabled", _wrap_ipmi_channel_access_t_get_alerting_enabled},
{"OpenIPMIc::ipmi_channel_access_t_set_alerting_enabled", _wrap_ipmi_channel_access_t_set_alerting_enabled},
{"OpenIPMIc::ipmi_channel_access_t_get_per_msg_auth", _wrap_ipmi_channel_access_t_get_per_msg_auth},
{"OpenIPMIc::ipmi_channel_access_t_set_per_msg_auth", _wrap_ipmi_channel_access_t_set_per_msg_auth},
{"OpenIPMIc::ipmi_channel_access_t_get_user_auth", _wrap_ipmi_channel_access_t_get_user_auth},
{"OpenIPMIc::ipmi_channel_access_t_set_user_auth", _wrap_ipmi_channel_access_t_set_user_auth},
{"OpenIPMIc::ipmi_channel_access_t_get_access_mode", _wrap_ipmi_channel_access_t_get_access_mode},
{"OpenIPMIc::ipmi_channel_access_t_set_access_mode", _wrap_ipmi_channel_access_t_set_access_mode},
{"OpenIPMIc::ipmi_channel_access_t_get_privilege_limit", _wrap_ipmi_channel_access_t_get_privilege_limit},
{"OpenIPMIc::ipmi_channel_access_t_set_privilege_limit", _wrap_ipmi_channel_access_t_set_privilege_limit},
{"OpenIPMIc::ipmi_channel_access_t_setall", _wrap_ipmi_channel_access_t_setall},
{"OpenIPMIc::delete_ipmi_user_t", _wrap_delete_ipmi_user_t},
{"OpenIPMIc::ipmi_user_t_copy", _wrap_ipmi_user_t_copy},
{"OpenIPMIc::ipmi_user_t_get_channel", _wrap_ipmi_user_t_get_channel},
{"OpenIPMIc::ipmi_user_t_get_num", _wrap_ipmi_user_t_get_num},
{"OpenIPMIc::ipmi_user_t_set_num", _wrap_ipmi_user_t_set_num},
{"OpenIPMIc::ipmi_user_t_get_name", _wrap_ipmi_user_t_get_name},
{"OpenIPMIc::ipmi_user_t_set_name", _wrap_ipmi_user_t_set_name},
{"OpenIPMIc::ipmi_user_t_set_password", _wrap_ipmi_user_t_set_password},
{"OpenIPMIc::ipmi_user_t_set_password2", _wrap_ipmi_user_t_set_password2},
{"OpenIPMIc::ipmi_user_t_set_password_auto", _wrap_ipmi_user_t_set_password_auto},
{"OpenIPMIc::ipmi_user_t_get_enable", _wrap_ipmi_user_t_get_enable},
{"OpenIPMIc::ipmi_user_t_set_enable", _wrap_ipmi_user_t_set_enable},
{"OpenIPMIc::ipmi_user_t_get_link_auth_enabled", _wrap_ipmi_user_t_get_link_auth_enabled},
{"OpenIPMIc::ipmi_user_t_set_link_auth_enabled", _wrap_ipmi_user_t_set_link_auth_enabled},
{"OpenIPMIc::ipmi_user_t_get_msg_auth_enabled", _wrap_ipmi_user_t_get_msg_auth_enabled},
{"OpenIPMIc::ipmi_user_t_set_msg_auth_enabled", _wrap_ipmi_user_t_set_msg_auth_enabled},
{"OpenIPMIc::ipmi_user_t_get_access_cb_only", _wrap_ipmi_user_t_get_access_cb_only},
{"OpenIPMIc::ipmi_user_t_set_access_cb_only", _wrap_ipmi_user_t_set_access_cb_only},
{"OpenIPMIc::ipmi_user_t_get_privilege_limit", _wrap_ipmi_user_t_get_privilege_limit},
{"OpenIPMIc::ipmi_user_t_set_privilege_limit", _wrap_ipmi_user_t_set_privilege_limit},
{"OpenIPMIc::ipmi_user_t_get_session_limit", _wrap_ipmi_user_t_get_session_limit},
{"OpenIPMIc::ipmi_user_t_set_session_limit", _wrap_ipmi_user_t_set_session_limit},
{"OpenIPMIc::ipmi_user_t_set_all", _wrap_ipmi_user_t_set_all},
{"OpenIPMIc::delete_ipmi_lanparm_t", _wrap_delete_ipmi_lanparm_t},
{"OpenIPMIc::ipmi_lanparm_t_get_mc_id", _wrap_ipmi_lanparm_t_get_mc_id},
{"OpenIPMIc::ipmi_lanparm_t_get_channel", _wrap_ipmi_lanparm_t_get_channel},
{"OpenIPMIc::ipmi_lanparm_t_get_parm", _wrap_ipmi_lanparm_t_get_parm},
{"OpenIPMIc::ipmi_lanparm_t_set_parm", _wrap_ipmi_lanparm_t_set_parm},
{"OpenIPMIc::ipmi_lanparm_t_set_parm_array", _wrap_ipmi_lanparm_t_set_parm_array},
{"OpenIPMIc::ipmi_lanparm_t_get_config", _wrap_ipmi_lanparm_t_get_config},
{"OpenIPMIc::ipmi_lanparm_t_set_config", _wrap_ipmi_lanparm_t_set_config},
{"OpenIPMIc::ipmi_lanparm_t_clear_lock", _wrap_ipmi_lanparm_t_clear_lock},
{"OpenIPMIc::delete_ipmi_lan_config_t", _wrap_delete_ipmi_lan_config_t},
{"OpenIPMIc::ipmi_lan_config_t_get_val", _wrap_ipmi_lan_config_t_get_val},
{"OpenIPMIc::ipmi_lan_config_t_set_val", _wrap_ipmi_lan_config_t_set_val},
{"OpenIPMIc::delete_ipmi_pef_t", _wrap_delete_ipmi_pef_t},
{"OpenIPMIc::ipmi_pef_t_get_mc_id", _wrap_ipmi_pef_t_get_mc_id},
{"OpenIPMIc::ipmi_pef_t_get_parm", _wrap_ipmi_pef_t_get_parm},
{"OpenIPMIc::ipmi_pef_t_set_parm", _wrap_ipmi_pef_t_set_parm},
{"OpenIPMIc::ipmi_pef_t_set_parm_array", _wrap_ipmi_pef_t_set_parm_array},
{"OpenIPMIc::ipmi_pef_t_get_config", _wrap_ipmi_pef_t_get_config},
{"OpenIPMIc::ipmi_pef_t_set_config", _wrap_ipmi_pef_t_set_config},
{"OpenIPMIc::ipmi_pef_t_clear_lock", _wrap_ipmi_pef_t_clear_lock},
{"OpenIPMIc::delete_ipmi_pef_config_t", _wrap_delete_ipmi_pef_config_t},
{"OpenIPMIc::ipmi_pef_config_t_get_val", _wrap_ipmi_pef_config_t_get_val},
{"OpenIPMIc::ipmi_pef_config_t_set_val", _wrap_ipmi_pef_config_t_set_val},
{"OpenIPMIc::delete_ipmi_pet_t", _wrap_delete_ipmi_pet_t},
{"OpenIPMIc::ipmi_pet_t_get_mc_id", _wrap_ipmi_pet_t_get_mc_id},
{"OpenIPMIc::ipmi_pet_t_get_channel", _wrap_ipmi_pet_t_get_channel},
{"OpenIPMIc::ipmi_pet_t_get_ip_addr", _wrap_ipmi_pet_t_get_ip_addr},
{"OpenIPMIc::ipmi_pet_t_get_mac_addr", _wrap_ipmi_pet_t_get_mac_addr},
{"OpenIPMIc::ipmi_pet_t_get_eft_sel", _wrap_ipmi_pet_t_get_eft_sel},
{"OpenIPMIc::ipmi_pet_t_get_policy_num", _wrap_ipmi_pet_t_get_policy_num},
{"OpenIPMIc::ipmi_pet_t_get_apt_sel", _wrap_ipmi_pet_t_get_apt_sel},
{"OpenIPMIc::ipmi_pet_t_get_lan_dest_sel", _wrap_ipmi_pet_t_get_lan_dest_sel},
{"OpenIPMIc::delete_ipmi_cmdlang_t", _wrap_delete_ipmi_cmdlang_t},
{"OpenIPMIc::ipmi_cmdlang_t_handle", _wrap_ipmi_cmdlang_t_handle},
{"OpenIPMIc::ipmi_cmdlang_t_is_help", _wrap_ipmi_cmdlang_t_is_help},
{"OpenIPMIc::ipmi_cmdlang_t_get_err", _wrap_ipmi_cmdlang_t_get_err},
{"OpenIPMIc::ipmi_cmdlang_t_get_errstr", _wrap_ipmi_cmdlang_t_get_errstr},
{"OpenIPMIc::ipmi_cmdlang_t_get_objstr", _wrap_ipmi_cmdlang_t_get_objstr},
{"OpenIPMIc::ipmi_cmdlang_t_get_location", _wrap_ipmi_cmdlang_t_get_location},
{"OpenIPMIc::delete_ipmi_cmdlang_event_t", _wrap_delete_ipmi_cmdlang_event_t},
{"OpenIPMIc::ipmi_cmdlang_event_t_restart", _wrap_ipmi_cmdlang_event_t_restart},
{"OpenIPMIc::ipmi_cmdlang_event_t_next_field", _wrap_ipmi_cmdlang_event_t_next_field},
{"OpenIPMIc::delete_ipmi_sol_conn_t", _wrap_delete_ipmi_sol_conn_t},
{"OpenIPMIc::ipmi_sol_conn_t_set_ACK_timeout", _wrap_ipmi_sol_conn_t_set_ACK_timeout},
{"OpenIPMIc::ipmi_sol_conn_t_get_ACK_timeout", _wrap_ipmi_sol_conn_t_get_ACK_timeout},
{"OpenIPMIc::ipmi_sol_conn_t_set_ACK_retries", _wrap_ipmi_sol_conn_t_set_ACK_retries},
{"OpenIPMIc::ipmi_sol_conn_t_get_ACK_retries", _wrap_ipmi_sol_conn_t_get_ACK_retries},
{"OpenIPMIc::ipmi_sol_conn_t_set_use_authentication", _wrap_ipmi_sol_conn_t_set_use_authentication},
{"OpenIPMIc::ipmi_sol_conn_t_get_use_authentication", _wrap_ipmi_sol_conn_t_get_use_authentication},
{"OpenIPMIc::ipmi_sol_conn_t_set_use_encryption", _wrap_ipmi_sol_conn_t_set_use_encryption},
{"OpenIPMIc::ipmi_sol_conn_t_get_use_encryption", _wrap_ipmi_sol_conn_t_get_use_encryption},
{"OpenIPMIc::ipmi_sol_conn_t_set_shared_serial_alert_behavior", _wrap_ipmi_sol_conn_t_set_shared_serial_alert_behavior},
{"OpenIPMIc::ipmi_sol_conn_t_get_shared_serial_alert_behavior", _wrap_ipmi_sol_conn_t_get_shared_serial_alert_behavior},
{"OpenIPMIc::ipmi_sol_conn_t_set_deassert_CTS_DCD_DSR_on_connect", _wrap_ipmi_sol_conn_t_set_deassert_CTS_DCD_DSR_on_connect},
{"OpenIPMIc::ipmi_sol_conn_t_get_deassert_CTS_DCD_DSR_on_connect", _wrap_ipmi_sol_conn_t_get_deassert_CTS_DCD_DSR_on_connect},
{"OpenIPMIc::ipmi_sol_conn_t_set_bit_rate", _wrap_ipmi_sol_conn_t_set_bit_rate},
{"OpenIPMIc::ipmi_sol_conn_t_get_bit_rate", _wrap_ipmi_sol_conn_t_get_bit_rate},
{"OpenIPMIc::ipmi_sol_conn_t_open", _wrap_ipmi_sol_conn_t_open},
{"OpenIPMIc::ipmi_sol_conn_t_close", _wrap_ipmi_sol_conn_t_close},
{"OpenIPMIc::ipmi_sol_conn_t_force_close", _wrap_ipmi_sol_conn_t_force_close},
{"OpenIPMIc::ipmi_sol_conn_t_write", _wrap_ipmi_sol_conn_t_write},
{"OpenIPMIc::ipmi_sol_conn_t_release_nack", _wrap_ipmi_sol_conn_t_release_nack},
{"OpenIPMIc::ipmi_sol_conn_t_send_break", _wrap_ipmi_sol_conn_t_send_break},
{"OpenIPMIc::ipmi_sol_conn_t_set_CTS_assertable", _wrap_ipmi_sol_conn_t_set_CTS_assertable},
{"OpenIPMIc::ipmi_sol_conn_t_set_DCD_DSR_asserted", _wrap_ipmi_sol_conn_t_set_DCD_DSR_asserted},
{"OpenIPMIc::ipmi_sol_conn_t_set_RI_asserted", _wrap_ipmi_sol_conn_t_set_RI_asserted},
{"OpenIPMIc::ipmi_sol_conn_t_flush", _wrap_ipmi_sol_conn_t_flush},
{"OpenIPMIc::delete_ipmi_sol_config_t", _wrap_delete_ipmi_sol_config_t},
{"OpenIPMIc::ipmi_sol_config_t_get_val", _wrap_ipmi_sol_config_t_get_val},
{"OpenIPMIc::ipmi_sol_config_t_set_val", _wrap_ipmi_sol_config_t_set_val},
{"OpenIPMIc::delete_ipmi_solparm_t", _wrap_delete_ipmi_solparm_t},
{"OpenIPMIc::ipmi_solparm_t_get_mc_id", _wrap_ipmi_solparm_t_get_mc_id},
{"OpenIPMIc::ipmi_solparm_t_get_channel", _wrap_ipmi_solparm_t_get_channel},
{"OpenIPMIc::ipmi_solparm_t_get_parm", _wrap_ipmi_solparm_t_get_parm},
{"OpenIPMIc::ipmi_solparm_t_set_parm", _wrap_ipmi_solparm_t_set_parm},
{"OpenIPMIc::ipmi_solparm_t_set_parm_array", _wrap_ipmi_solparm_t_set_parm_array},
{"OpenIPMIc::ipmi_solparm_t_get_config", _wrap_ipmi_solparm_t_get_config},
{"OpenIPMIc::ipmi_solparm_t_set_config", _wrap_ipmi_solparm_t_set_config},
{"OpenIPMIc::ipmi_solparm_t_clear_lock", _wrap_ipmi_solparm_t_clear_lock},
{"OpenIPMIc::enable_debug_malloc", _wrap_enable_debug_malloc},
{"OpenIPMIc::enable_debug_msg", _wrap_enable_debug_msg},
{"OpenIPMIc::disable_debug_msg", _wrap_disable_debug_msg},
{"OpenIPMIc::enable_debug_rawmsg", _wrap_enable_debug_rawmsg},
{"OpenIPMIc::disable_debug_rawmsg", _wrap_disable_debug_rawmsg},
{"OpenIPMIc::init_glib", _wrap_init_glib},
{"OpenIPMIc::init_glib12", _wrap_init_glib12},
{"OpenIPMIc::init_tcl", _wrap_init_tcl},
{"OpenIPMIc::init_posix", _wrap_init_posix},
{"OpenIPMIc::init", _wrap_init},
{"OpenIPMIc::shutdown_everything", _wrap_shutdown_everything},
{"OpenIPMIc::wait_io", _wrap_wait_io},
{"OpenIPMIc::open_domain", _wrap_open_domain},
{"OpenIPMIc::open_domain2", _wrap_open_domain2},
{"OpenIPMIc::open_domain3", _wrap_open_domain3},
{"OpenIPMIc::parse_args_iter_help", _wrap_parse_args_iter_help},
{"OpenIPMIc::parse_option_help", _wrap_parse_option_help},
{"OpenIPMIc::add_domain_change_handler", _wrap_add_domain_change_handler},
{"OpenIPMIc::remove_domain_change_handler", _wrap_remove_domain_change_handler},
{"OpenIPMIc::set_log_handler", _wrap_set_log_handler},
{"OpenIPMIc::color_string", _wrap_color_string},
{"OpenIPMIc::lanparm_parm_to_str", _wrap_lanparm_parm_to_str},
{"OpenIPMIc::lanparm_str_to_parm", _wrap_lanparm_str_to_parm},
{"OpenIPMIc::lanconfig_enum_val", _wrap_lanconfig_enum_val},
{"OpenIPMIc::lanconfig_enum_idx", _wrap_lanconfig_enum_idx},
{"OpenIPMIc::pef_parm_to_str", _wrap_pef_parm_to_str},
{"OpenIPMIc::pef_str_to_parm", _wrap_pef_str_to_parm},
{"OpenIPMIc::pefconfig_enum_val", _wrap_pefconfig_enum_val},
{"OpenIPMIc::pefconfig_enum_idx", _wrap_pefconfig_enum_idx},
{"OpenIPMIc::solparm_parm_to_str", _wrap_solparm_parm_to_str},
{"OpenIPMIc::solparm_str_to_parm", _wrap_solparm_str_to_parm},
{"OpenIPMIc::solconfig_enum_val", _wrap_solconfig_enum_val},
{"OpenIPMIc::solconfig_enum_idx", _wrap_solconfig_enum_idx},
{"OpenIPMIc::get_threshold_access_support_string", _wrap_get_threshold_access_support_string},
{"OpenIPMIc::get_hysteresis_support_string", _wrap_get_hysteresis_support_string},
{"OpenIPMIc::get_event_support_string", _wrap_get_event_support_string},
{"OpenIPMIc::channel_medium_string", _wrap_channel_medium_string},
{"OpenIPMIc::channel_protocol_string", _wrap_channel_protocol_string},
{"OpenIPMIc::channel_session_support_string", _wrap_channel_session_support_string},
{"OpenIPMIc::channel_access_mode_string", _wrap_channel_access_mode_string},
{"OpenIPMIc::privilege_string", _wrap_privilege_string},
{"OpenIPMIc::authtype_string", _wrap_authtype_string},
{"OpenIPMIc::get_error_string", _wrap_get_error_string},
{"OpenIPMIc::alloc_empty_args", _wrap_alloc_empty_args},
{"OpenIPMIc::alloc_parse_args", _wrap_alloc_parse_args},
{"OpenIPMIc::fru_index_to_str", _wrap_fru_index_to_str},
{"OpenIPMIc::fru_str_to_index", _wrap_fru_str_to_index},
{"OpenIPMIc::alloc_cmdlang", _wrap_alloc_cmdlang},
{"OpenIPMIc::cmdlang_set_evinfo", _wrap_cmdlang_set_evinfo},
{"OpenIPMIc::cmdlang_get_evinfo", _wrap_cmdlang_get_evinfo},
{"OpenIPMIc::set_cmdlang_global_err_handler", _wrap_set_cmdlang_global_err_handler},
{"OpenIPMIc::set_cmdlang_event_handler", _wrap_set_cmdlang_event_handler},
{"OpenIPMIc::sol_state_string", _wrap_sol_state_string},
{0,0}
};
/* -----------------------------------------------------------------------------
 * Type initialization:
 * This problem is made tough by the requirement that no dynamic
 * memory is used. Also, since swig_type_info structures store pointers to
 * swig_cast_info structures and swig_cast_info structures store pointers back
 * to swig_type_info structures, we need some lookup code at initialization.
 * The idea is that swig generates all the structures that are needed.
 * The runtime then collects these partially filled structures.
 * The SWIG_InitializeModule function takes these initial arrays out of
 * swig_module, and does all the lookup, filling in the swig_module.types
 * array with the correct data and linking the correct swig_cast_info
 * structures together.
 *
 * The generated swig_type_info structures are assigned statically to an initial
 * array. We just loop through that array, and handle each type individually.
 * First we lookup if this type has been already loaded, and if so, use the
 * loaded structure instead of the generated one. Then we have to fill in the
 * cast dependencies. The cast data is initially stored in something like a
 * two-dimensional array. Each row corresponds to a type (there are the same
 * number of rows as there are in the swig_type_initial array). Each entry in
 * a column is one of the swig_cast_info structures for that type.
 * The cast_initial array is actually an array of arrays, because each row has
 * a variable number of columns.
 *
 * We loop through the cast[] array associated with the type and mark casts
 * which have not been defined in previously loaded modules by assigning
 * cast pointer value to cast->next. We also hash cast->type->name string
 * and store the value in the cast->value field. If we encounter swig_cast_info
 * structure that represents a cast to self we move it to the beginning
 * of the cast array. One trick we need to do is making sure the type pointer
 * in the swig_cast_info struct is correct.
 *
 * First off, we lookup the cast->type name to see if it is already loaded.
 * There are three cases to handle:
 *  1) If the cast->type has already been loaded AND the type we are adding
 *     casting info to has not been loaded (it is in this module), THEN we
 *     replace the cast->type pointer with the type pointer that has already
 *     been loaded.
 *  2) If BOTH types (the one we are adding casting info to, and the
 *     cast->type) are loaded, THEN the cast info has already been loaded by
 *     the previous module so we just ignore it.
 *  3) Finally, if cast->type has not already been loaded, then we add that
 *     swig_cast_info to the list (because the cast->type) pointer will
 *     be correct.
 *
 * Once the cast array has been set up AND it does have new casts that need
 * to be added we sort non-self cast entries to move filtered out entries
 * to the end of the array and to arrange the rest in the increasing order
 * of their type pointer values. We store the index of the last added entry
 * in the cast->value field of the entry[0] (overwriting the name hash). Then
 * we sort <next|value> fields of the remaining entries to arrange hash values
 * in the increasing order. This way cast->next->type->name field matches
 * the cast->value hash.
 *
 * Example:
 * Array of casts for type stored at 0x5000, cast to type stored at 0x3000
 * has already been loaded
 *
 *      After sweep-and-hash:   After sort-by-type:    After sort-by-hash:
 *        ________________       ________________       ________________
 *       |                |     |                |     |                |
 * Entry |  type = 0x5000 |     |  type = 0x5000 |     |  type = 0x5000 |
 *   0   |                |     |                |     |                |
 *       |  next = Entry0 |     |  next = Entry0 |     |  next = Entry0 |
 *       | value = 1212   |     | value = 3      |     | value = 3      |
 *       |                |     |                |     |                |
 *       |================|     |================|     |================|
 *       |                |     |                |     |                |
 * Entry |  type = 0x2000 |     |  type = 0x1000 |     |  type = 0x1000 |
 *   1   |                |     |                |     |                |
 *       |  next = Entry1 |     |  next = Entry1 |     |  next = Entry3 |
 *       | value = 3434   |     | value = 4545   |     | value = 2323   |
 *       |________________|     |________________|     |________________|
 *       |                |     |                |     |                |
 * Entry |  type = 0x3000 |     |  type = 0x2000 |     |  type = 0x2000 |
 *   2   |                |     |                |     |                |
 *       |  next = 0      |     |  next = Entry2 |     |  next = Entry2 |
 *       | value = 0      |     | value = 3434   |     | value = 3434   |
 *       |________________|     |________________|     |________________|
 *       |                |     |                |     |                |
 * Entry |  type = 0x1000 |     |  type = 0x4000 |     |  type = 0x4000 |
 *   3   |                |     |                |     |                |
 *       |  next = Entry3 |     |  next = Entry3 |     |  next = Entry1 |
 *       | value = 4545   |     | value = 2323   |     | value = 4545   |
 *       |________________|     |________________|     |________________|
 *       |                |     |                |     |                |
 * Entry |  type = 0x4000 |     |  type = 0x3000 |     |  type = 0x3000 |
 *   4   |                |     |                |     |                |
 *       |  next = Entry4 |     |  next = 0      |     |  next = 0      |
 *       | value = 2323   |     | value = 0      |     | value = 0      |
 *       |________________|     |________________|     |________________|
 *
 * Once the cast array has been initialized, we use cast[0]->next field to link
 * it into the list of cast arrays for the type.
 *              ____    ____    ____
 * type->cast->|next|->|next|->|next|->0
 *             |----|  |----|  |----|
 *             |----|  |----|  |----|
 *             |----|  |----|  |----|
 *
 * Subsequent cast resolution works as follows:
 *
 * 1. Check whether the type matches the first entry in the current cast array.
 * 2. If not, then do a binary search over the (0:cast->value] interval using
 *    either type address or the hash value of the type name.
 * 3. If not found, then move over to the next cast array (cast[0]->next).
 *
 * ----------------------------------------------------------------------------- */

#ifdef __cplusplus
extern "C" {
#if 0
} /* c-mode */
#endif
#endif

#if 0
#define SWIGRUNTIME_DEBUG
#endif

#ifndef SWIG_INIT_CLIENT_DATA_TYPE
#define SWIG_INIT_CLIENT_DATA_TYPE void *
#endif

/*
 * Sort function that puts cast entries with nonzero 'next' at the front
 * of the array while ordering them by addresses of their 'type' structs.
 */
SWIGINTERN int SWIG_CastCmpStruct(const void *pa, const void *pb) {
  swig_cast_info *pca = (swig_cast_info *)pa;
  swig_cast_info *pcb = (swig_cast_info *)pb;
  if (pca->type < pcb->type)
  return (pca->next || pcb->next == 0) ? -1 : 1;
  if (pca->type > pcb->type)
  return (pcb->next || pca->next == 0) ? 1 : -1;
  return 0;
}

/*
 * Shell-sort 'next' and 'value' field pairs to order them by 'value'.
 */
SWIGINTERN void SWIG_CastHashSort(swig_cast_info *cast, int size) {
  const int hmax = size/9;
  int h, i;
  for(h = 1; h <= hmax; h = 3*h+1);
  for(; h > 0; h /= 3)
  {
    for(i = h; i < size; ++i)
    {
      swig_cast_info *p = cast[i].next;
      unsigned int hash = cast[i].value;
      int j = i;
      while(j >= h && hash < cast[j-h].value)
      {
        cast[j].next = cast[j-h].next;
        cast[j].value = cast[j-h].value;
        j -= h;
      }
      cast[j].next = p;
      cast[j].value = hash;
    }
  }
}

SWIGRUNTIME void
SWIG_InitializeModule(SWIG_INIT_CLIENT_DATA_TYPE clientdata) {
  size_t i;
  swig_module_info *module_head, *iter;
  int init;
  
  /* check to see if the circular list has been setup, if not, set it up */
  if (swig_module.next==0) {
    /* Initialize the swig_module */
    swig_module.type_initial = swig_type_initial;
    swig_module.cast_initial = swig_cast_initial;
    swig_module.next = &swig_module;
    init = 1;
  } else {
    init = 0;
  }
  
  /* Try and load any already created modules */
  module_head = SWIG_GetModule(clientdata);
  if (!module_head) {
    /* This is the first module loaded for this interpreter */
    /* so set the swig module into the interpreter */
    SWIG_SetModule(clientdata, &swig_module);
  } else {
    /* the interpreter has loaded a SWIG module, but has it loaded this one? */
    iter=module_head;
    do {
      if (iter==&swig_module) {
        /* Our module is already in the list, so there's nothing more to do. */
        return;
      }
      iter=iter->next;
    } while (iter!= module_head);
    
    /* otherwise we must add our module into the list */
    swig_module.next = module_head->next;
    module_head->next = &swig_module;
  }
  
  /* When multiple interpreters are used, a module could have already been initialized in
       a different interpreter, but not yet have a pointer in this interpreter.
       In this case, we do not want to continue adding types... everything should be
       set up already */
  if (init == 0) return;
  
  /* Now work on filling in swig_module.types */
#ifdef SWIGRUNTIME_DEBUG
  printf("SWIG_InitializeModule: size %lu\n", (unsigned long)swig_module.size);
#endif
  for (i = 0; i < swig_module.size; ++i) {
    swig_type_info *type = 0;
    swig_type_info *target_type;
    swig_cast_info *cast, *first;
    int num_mapped = 0;
    
#ifdef SWIGRUNTIME_DEBUG
    printf("SWIG_InitializeModule: type %lu %s\n", (unsigned long)i, swig_module.type_initial[i]->name);
#endif
    
    /* if there is another module already loaded */
    if (swig_module.next != &swig_module) {
      type = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, swig_module.type_initial[i]->name);
    }
    if (type) {
      /* Overwrite clientdata field */
#ifdef SWIGRUNTIME_DEBUG
      printf("SWIG_InitializeModule: found type %s\n", type->name);
#endif
      if (swig_module.type_initial[i]->clientdata) {
        type->clientdata = swig_module.type_initial[i]->clientdata;
#ifdef SWIGRUNTIME_DEBUG
        printf("SWIG_InitializeModule: found and overwrite type %s \n", type->name);
#endif
      }
    } else {
      type = swig_module.type_initial[i];
    }
    
    /* Insert casting types */
    cast = first = swig_module.cast_initial[i];
    while (cast->type) {
      /* Don't need to add information already in the list */
      target_type = 0;
#ifdef SWIGRUNTIME_DEBUG
      printf("SWIG_InitializeModule: look cast %s\n", cast->type->name);
#endif
      if (swig_module.next != &swig_module) {
        target_type = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, cast->type->name);
        if (target_type) {
          /* Target type already defined in another module */
#ifdef SWIGRUNTIME_DEBUG
          printf("SWIG_InitializeModule: found cast %s\n", target_type->name);
#endif
          if (type == swig_module.type_initial[i]) {
#ifdef SWIGRUNTIME_DEBUG
            printf("SWIG_InitializeModule: skip old type %s\n", target_type->name);
#endif
            cast->type = target_type;
            target_type = 0;
          } else {
            /* Check if this cast is already in the list */
            swig_cast_info *ocast = SWIG_TypeCheck(target_type->name, type);
#ifdef SWIGRUNTIME_DEBUG
            if (ocast) printf("SWIG_InitializeModule: skip old cast %s\n", target_type->name);
#endif
            if (!ocast) target_type = 0;
          }
        }
      }
      
      if (!target_type) {
#ifdef SWIGRUNTIME_DEBUG
        printf("SWIG_InitializeModule: adding cast %s\n", cast->type->name);
#endif
        /* Set inclusion mark for sorting */
        cast->next = cast;
        num_mapped++;
        
        if (type == cast->type) {
#ifdef SWIGRUNTIME_DEBUG
          printf("%s : self cast at pos [%li]\n", type->name, cast - first);
#endif
          if (cast - first) {
            /* Move cast to itself to the first entry in the array */
            
            swig_cast_info tmp = *cast;
            *cast = *first;
            *first = tmp;
          }
          first++;
          
        } else {
          cast->value = SWIG_Hash(cast->type->name, (unsigned int)strlen(cast->type->name));
        }
      }
      cast++;
    }
    
    if (num_mapped) {
      if (cast - first) {
        swig_cast_info *tmp;
        
        /* Sort casts by type address for binary search in SWIG_TypeCheckStruct */
        qsort(first, cast - first, sizeof(swig_cast_info), SWIG_CastCmpStruct);
        
        /* Remap back links for added entries */
        cast = swig_module.cast_initial[i] + num_mapped;
        for (tmp = first; tmp < cast; tmp++) {
          tmp->next = tmp;
        }
      }
      
      /* Set the value field of the first entry to the index of the last added entry */
      cast = swig_module.cast_initial[i];
      cast->value = num_mapped - 1;
      
      num_mapped -= (int)(first - cast);
      if (num_mapped > 1) {
        /* Sort <'next','value'> pairs by 'value' for binary search in SWIG_TypeCheck */
        
        SWIG_CastHashSort(first, num_mapped);
      }
      
      first = type->cast;
      if (first) {
        /* Link the current set into the list of cast arrays */
        cast->next = first->next;
        first->next = cast;
      } else {
        cast->next = 0;
        type->cast = cast;
      }
    }
    
    /* Set entry in modules->types array equal to the type */
    swig_module.types[i] = type;
  }
  swig_module.types[i] = 0;
  
#ifdef SWIGRUNTIME_DEBUG
  printf("**** SWIG_InitializeModule: Cast List ******\n");
  for (i = 0; i < swig_module.size; ++i) {
    int j = 0;
    swig_cast_info *cast = swig_module.cast_initial[i];
    printf("SWIG_InitializeModule: type %lu %s\n", (unsigned long)i, swig_module.type_initial[i]->name);
    while (cast->type) {
      printf("SWIG_InitializeModule: cast type %s\n", cast->type->name);
      cast++;
      ++j;
    }
    printf("---- Total casts: %d\n",j);
  }
  printf("**** SWIG_InitializeModule: Cast List ******\n");
#endif
}

/* This function will propagate the clientdata field of type to
* any new swig_type_info structures that have been added into the list
* of equivalent types.  It is like calling
* SWIG_TypeClientData(type, clientdata) a second time.
*/
SWIGRUNTIME void
SWIG_PropagateClientData(void) {
  size_t i;
  static int init_run = 0;
  
  if (init_run) return;
  init_run = 1;
  
  for (i = 0; i < swig_module.size; i++) {
    if (swig_module.types[i]->clientdata) {
      swig_cast_info *head, *cast;
      head = swig_module.types[i]->cast;
      while (head) {
        for (cast = head; (cast - head) <= head->value; cast++) {
          if (!cast->converter) {
            if (cast->type && !cast->type->clientdata)
            SWIG_TypeClientData(cast->type, swig_module.types[i]->clientdata);
          }
        }
        head = head->next;
      }
    }
  }
}

#ifdef __cplusplus
#if 0
{
  /* c-mode */
#endif
}
#endif



#if defined(__cplusplus) && ! defined(XSPROTO)
extern "C"
#endif

XS(SWIG_init) {
  dXSARGS;
  int i;
  (void)items;
  
  SWIG_InitializeModule(0);
  
  /* Install commands */
  for (i = 0; swig_commands[i].name; i++) {
    /* Casts only needed for Perl < 5.10. */
#ifdef __cplusplus
    newXS(const_cast<char*>(swig_commands[i].name), swig_commands[i].wrapper, const_cast<char*>(__FILE__));
#else
    newXS((char*)swig_commands[i].name, swig_commands[i].wrapper, (char*)__FILE__);
#endif
  }
  
  /* Install variables */
  for (i = 0; swig_variables[i].name; i++) {
    SV *sv;
    sv = get_sv(swig_variables[i].name, TRUE | 0x2 | GV_ADDMULTI);
    if (swig_variables[i].type) {
      SWIG_MakePtr(sv,(void *)1, *swig_variables[i].type,0);
    } else {
      sv_setiv(sv,(IV) 0);
    }
    swig_create_magic(sv, swig_variables[i].name, swig_variables[i].set, swig_variables[i].get); 
  }
  
  /* Install constant */
  for (i = 0; swig_constants[i].type; i++) {
    SV *sv;
    sv = get_sv(swig_constants[i].name, TRUE | 0x2 | GV_ADDMULTI);
    switch(swig_constants[i].type) {
    case SWIG_INT:
      sv_setiv(sv, (IV) swig_constants[i].lvalue);
      break;
    case SWIG_FLOAT:
      sv_setnv(sv, (double) swig_constants[i].dvalue);
      break;
    case SWIG_STRING:
      sv_setpv(sv, (const char *) swig_constants[i].pvalue);
      break;
    case SWIG_POINTER:
      SWIG_MakePtr(sv, swig_constants[i].pvalue, *(swig_constants[i].ptype),0);
      break;
    case SWIG_BINARY:
      SWIG_MakePackedObj(sv, swig_constants[i].pvalue, swig_constants[i].lvalue, *(swig_constants[i].ptype));
      break;
    default:
      break;
    }
    SvREADONLY_on(sv);
  }
  
  SWIG_TypeClientData(SWIGTYPE_p_strconstarray, (void*) "OpenIPMI::strconstarray");
  SWIG_TypeClientData(SWIGTYPE_p_argarray, (void*) "OpenIPMI::argarray");
  SWIG_TypeClientData(SWIGTYPE_p_iargarray, (void*) "OpenIPMI::iargarray");
  SWIG_TypeClientData(SWIGTYPE_p_ipmi_domain_t, (void*) "OpenIPMI::ipmi_domain_t");
  SWIG_TypeClientData(SWIGTYPE_p_ipmi_domain_id_t, (void*) "OpenIPMI::ipmi_domain_id_t");
  SWIG_TypeClientData(SWIGTYPE_p_ipmi_args_t, (void*) "OpenIPMI::ipmi_args_t");
  SWIG_TypeClientData(SWIGTYPE_p_ipmi_entity_t, (void*) "OpenIPMI::ipmi_entity_t");
  SWIG_TypeClientData(SWIGTYPE_p_ipmi_entity_id_t, (void*) "OpenIPMI::ipmi_entity_id_t");
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "FRU_INTERNAL_USE_AREA", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_FRU_FTR_INTERNAL_USE_AREA)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "FRU_CHASSIS_INFO_AREA", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_FRU_FTR_CHASSIS_INFO_AREA)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "FRU_BOARD_INFO_AREA", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_FRU_FTR_BOARD_INFO_AREA)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "FRU_PRODUCT_INFO_AREA", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_FRU_FTR_PRODUCT_INFO_AREA)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "FRU_MULTI_RECORD_AREA", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_FRU_FTR_MULTI_RECORD_AREA)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  SWIG_TypeClientData(SWIGTYPE_p_ipmi_fru_t, (void*) "OpenIPMI::ipmi_fru_t");
  SWIG_TypeClientData(SWIGTYPE_p_ipmi_fru_node_t, (void*) "OpenIPMI::ipmi_fru_node_t");
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "MC_RESET_COLD", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_MC_RESET_COLD)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "MC_RESET_WARM", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_MC_RESET_WARM)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "MAX_USED_CHANNELS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(MAX_IPMI_USED_CHANNELS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  SWIG_TypeClientData(SWIGTYPE_p_ipmi_mc_t, (void*) "OpenIPMI::ipmi_mc_t");
  SWIG_TypeClientData(SWIGTYPE_p_ipmi_mcid_t, (void*) "OpenIPMI::ipmi_mcid_t");
  SWIG_TypeClientData(SWIGTYPE_p_ipmi_event_t, (void*) "OpenIPMI::ipmi_event_t");
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SENSOR_TYPE_TEMPERATURE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SENSOR_TYPE_TEMPERATURE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SENSOR_TYPE_VOLTAGE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SENSOR_TYPE_VOLTAGE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SENSOR_TYPE_CURRENT", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SENSOR_TYPE_CURRENT)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SENSOR_TYPE_FAN", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SENSOR_TYPE_FAN)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SENSOR_TYPE_PHYSICAL_SECURITY", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SENSOR_TYPE_PHYSICAL_SECURITY)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SENSOR_TYPE_PLATFORM_SECURITY", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SENSOR_TYPE_PLATFORM_SECURITY)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SENSOR_TYPE_PROCESSOR", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SENSOR_TYPE_PROCESSOR)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SENSOR_TYPE_POWER_SUPPLY", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SENSOR_TYPE_POWER_SUPPLY)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SENSOR_TYPE_POWER_UNIT", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SENSOR_TYPE_POWER_UNIT)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SENSOR_TYPE_COOLING_DEVICE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SENSOR_TYPE_COOLING_DEVICE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SENSOR_TYPE_OTHER_UNITS_BASED_SENSOR", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SENSOR_TYPE_OTHER_UNITS_BASED_SENSOR)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SENSOR_TYPE_MEMORY", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SENSOR_TYPE_MEMORY)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SENSOR_TYPE_DRIVE_SLOT", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SENSOR_TYPE_DRIVE_SLOT)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SENSOR_TYPE_POWER_MEMORY_RESIZE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SENSOR_TYPE_POWER_MEMORY_RESIZE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SENSOR_TYPE_EVENT_LOGGING_DISABLED", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SENSOR_TYPE_EVENT_LOGGING_DISABLED)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SENSOR_TYPE_WATCHDOG_1", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SENSOR_TYPE_WATCHDOG_1)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SENSOR_TYPE_SYSTEM_EVENT", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SENSOR_TYPE_SYSTEM_EVENT)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SENSOR_TYPE_CRITICAL_INTERRUPT", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SENSOR_TYPE_BUTTON", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SENSOR_TYPE_BUTTON)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SENSOR_TYPE_MODULE_BOARD", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SENSOR_TYPE_MODULE_BOARD)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SENSOR_TYPE_MICROCONTROLLER_COPROCESSOR", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SENSOR_TYPE_MICROCONTROLLER_COPROCESSOR)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SENSOR_TYPE_ADD_IN_CARD", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SENSOR_TYPE_ADD_IN_CARD)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SENSOR_TYPE_CHASSIS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SENSOR_TYPE_CHASSIS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SENSOR_TYPE_CHIP_SET", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SENSOR_TYPE_CHIP_SET)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SENSOR_TYPE_OTHER_FRU", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SENSOR_TYPE_OTHER_FRU)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SENSOR_TYPE_CABLE_INTERCONNECT", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SENSOR_TYPE_CABLE_INTERCONNECT)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SENSOR_TYPE_TERMINATOR", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SENSOR_TYPE_TERMINATOR)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SENSOR_TYPE_SYSTEM_BOOT_INITIATED", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SENSOR_TYPE_SYSTEM_BOOT_INITIATED)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SENSOR_TYPE_BOOT_ERROR", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SENSOR_TYPE_BOOT_ERROR)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SENSOR_TYPE_OS_BOOT", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SENSOR_TYPE_OS_BOOT)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SENSOR_TYPE_OS_CRITICAL_STOP", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SENSOR_TYPE_OS_CRITICAL_STOP)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SENSOR_TYPE_SLOT_CONNECTOR", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SENSOR_TYPE_SLOT_CONNECTOR)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SENSOR_TYPE_SYSTEM_ACPI_POWER_STATE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SENSOR_TYPE_SYSTEM_ACPI_POWER_STATE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SENSOR_TYPE_WATCHDOG_2", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SENSOR_TYPE_WATCHDOG_2)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SENSOR_TYPE_PLATFORM_ALERT", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SENSOR_TYPE_PLATFORM_ALERT)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SENSOR_TYPE_ENTITY_PRESENCE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SENSOR_TYPE_ENTITY_PRESENCE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SENSOR_TYPE_MONITOR_ASIC_IC", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SENSOR_TYPE_MONITOR_ASIC_IC)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SENSOR_TYPE_LAN", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SENSOR_TYPE_LAN)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SENSOR_TYPE_MANAGEMENT_SUBSYSTEM_HEALTH", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SENSOR_TYPE_MANAGEMENT_SUBSYSTEM_HEALTH)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SENSOR_TYPE_BATTERY", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SENSOR_TYPE_BATTERY)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "EVENT_READING_TYPE_THRESHOLD", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_EVENT_READING_TYPE_THRESHOLD)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "EVENT_READING_TYPE_DISCRETE_USAGE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_EVENT_READING_TYPE_DISCRETE_USAGE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "EVENT_READING_TYPE_DISCRETE_STATE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_EVENT_READING_TYPE_DISCRETE_STATE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "EVENT_READING_TYPE_DISCRETE_PREDICTIVE_FAILURE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_EVENT_READING_TYPE_DISCRETE_PREDICTIVE_FAILURE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "EVENT_READING_TYPE_DISCRETE_LIMIT_EXCEEDED", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_EVENT_READING_TYPE_DISCRETE_LIMIT_EXCEEDED)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "EVENT_READING_TYPE_DISCRETE_PERFORMANCE_MET", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_EVENT_READING_TYPE_DISCRETE_PERFORMANCE_MET)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "EVENT_READING_TYPE_DISCRETE_SEVERITY", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_EVENT_READING_TYPE_DISCRETE_SEVERITY)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "EVENT_READING_TYPE_DISCRETE_DEVICE_PRESENCE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_EVENT_READING_TYPE_DISCRETE_DEVICE_PRESENCE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "EVENT_READING_TYPE_DISCRETE_DEVICE_ENABLE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_EVENT_READING_TYPE_DISCRETE_DEVICE_ENABLE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "EVENT_READING_TYPE_DISCRETE_AVAILABILITY", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_EVENT_READING_TYPE_DISCRETE_AVAILABILITY)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "EVENT_READING_TYPE_DISCRETE_REDUNDANCY", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_EVENT_READING_TYPE_DISCRETE_REDUNDANCY)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "EVENT_READING_TYPE_DISCRETE_ACPI_POWER", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_EVENT_READING_TYPE_DISCRETE_ACPI_POWER)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "EVENT_READING_TYPE_SENSOR_SPECIFIC", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_EVENT_READING_TYPE_SENSOR_SPECIFIC)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "RATE_UNIT_NONE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_RATE_UNIT_NONE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "RATE_UNIT_PER_US", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_RATE_UNIT_PER_US)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "RATE_UNIT_PER_MS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_RATE_UNIT_PER_MS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "RATE_UNIT_PER_SEC", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_RATE_UNIT_PER_SEC)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "RATE_UNIT_MIN", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_RATE_UNIT_MIN)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "RATE_UNIT_HOUR", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_RATE_UNIT_HOUR)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "RATE_UNIT_DAY", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_RATE_UNIT_DAY)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_UNSPECIFIED", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_UNSPECIFIED)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_DEGREES_C", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_DEGREES_C)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_DEGREES_F", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_DEGREES_F)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_DEGREES_K", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_DEGREES_K)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_VOLTS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_VOLTS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_AMPS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_AMPS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_WATTS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_WATTS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_JOULES", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_JOULES)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_COULOMBS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_COULOMBS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_VA", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_VA)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_NITS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_NITS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_LUMENS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_LUMENS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_LUX", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_LUX)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_CANDELA", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_CANDELA)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_KPA", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_KPA)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_PSI", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_PSI)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_NEWTONS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_NEWTONS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_CFM", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_CFM)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_RPM", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_RPM)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_HZ", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_HZ)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_USECONDS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_USECONDS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_MSECONDS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_MSECONDS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_SECONDS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_SECONDS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_MINUTE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_MINUTE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_HOUR", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_HOUR)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_DAY", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_DAY)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_WEEK", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_WEEK)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_MIL", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_MIL)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_INCHES", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_INCHES)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_FEET", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_FEET)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_CUBIC_INCHS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_CUBIC_INCHS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_CUBIC_FEET", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_CUBIC_FEET)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_MILLIMETERS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_MILLIMETERS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_CENTIMETERS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_CENTIMETERS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_METERS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_METERS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_CUBIC_CENTIMETERS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_CUBIC_CENTIMETERS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_CUBIC_METERS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_CUBIC_METERS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_LITERS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_LITERS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_FL_OZ", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_FL_OZ)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_RADIANS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_RADIANS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_SERADIANS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_SERADIANS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_REVOLUTIONS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_REVOLUTIONS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_CYCLES", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_CYCLES)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_GRAVITIES", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_GRAVITIES)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_OUNCES", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_OUNCES)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_POUNDS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_POUNDS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_FOOT_POUNDS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_FOOT_POUNDS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_OUNCE_INCHES", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_OUNCE_INCHES)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_GAUSS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_GAUSS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_GILBERTS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_GILBERTS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_HENRIES", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_HENRIES)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_MHENRIES", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_MHENRIES)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_FARADS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_FARADS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_UFARADS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_UFARADS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_OHMS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_OHMS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_SIEMENS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_SIEMENS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_MOLES", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_MOLES)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_BECQUERELS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_BECQUERELS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_PPM", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_PPM)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_reserved1", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_reserved1)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_DECIBELS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_DECIBELS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_DbA", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_DbA)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_DbC", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_DbC)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_GRAYS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_GRAYS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_SIEVERTS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_SIEVERTS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_COLOR_TEMP_DEG_K", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_COLOR_TEMP_DEG_K)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_BITS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_BITS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_KBITS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_KBITS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_MBITS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_MBITS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_GBITS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_GBITS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_BYTES", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_BYTES)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_KBYTES", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_KBYTES)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_MBYTES", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_MBYTES)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_GBYTES", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_GBYTES)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_WORDS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_WORDS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_DWORDS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_DWORDS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_QWORDS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_QWORDS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_LINES", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_LINES)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_HITS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_HITS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_MISSES", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_MISSES)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_RETRIES", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_RETRIES)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_RESETS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_RESETS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_OVERRUNS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_OVERRUNS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_UNDERRUNS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_UNDERRUNS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_COLLISIONS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_COLLISIONS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_PACKETS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_PACKETS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_MESSAGES", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_MESSAGES)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_CHARACTERS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_CHARACTERS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_ERRORS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_ERRORS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_CORRECTABLE_ERRORS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_CORRECTABLE_ERRORS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_UNCORRECTABLE_ERRORS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_UNCORRECTABLE_ERRORS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_FATAL_ERRORS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_FATAL_ERRORS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "UNIT_TYPE_GRAMS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_UNIT_TYPE_GRAMS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "MODIFIER_UNIT_NONE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_MODIFIER_UNIT_NONE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "MODIFIER_UNIT_BASE_DIV_MOD", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_MODIFIER_UNIT_BASE_DIV_MOD)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "MODIFIER_UNIT_BASE_MULT_MOD", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_MODIFIER_UNIT_BASE_MULT_MOD)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "THRESHOLD_ACCESS_SUPPORT_NONE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_THRESHOLD_ACCESS_SUPPORT_NONE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "THRESHOLD_ACCESS_SUPPORT_READABLE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_THRESHOLD_ACCESS_SUPPORT_READABLE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "THRESHOLD_ACCESS_SUPPORT_SETTABLE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_THRESHOLD_ACCESS_SUPPORT_SETTABLE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "THRESHOLD_ACCESS_SUPPORT_FIXED", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_THRESHOLD_ACCESS_SUPPORT_FIXED)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "HYSTERESIS_SUPPORT_NONE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_HYSTERESIS_SUPPORT_NONE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "HYSTERESIS_SUPPORT_READABLE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_HYSTERESIS_SUPPORT_READABLE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "HYSTERESIS_SUPPORT_SETTABLE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_HYSTERESIS_SUPPORT_SETTABLE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "HYSTERESIS_SUPPORT_FIXED", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_HYSTERESIS_SUPPORT_FIXED)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "EVENT_SUPPORT_PER_STATE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_EVENT_SUPPORT_PER_STATE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "EVENT_SUPPORT_ENTIRE_SENSOR", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_EVENT_SUPPORT_ENTIRE_SENSOR)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "EVENT_SUPPORT_GLOBAL_ENABLE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_EVENT_SUPPORT_GLOBAL_ENABLE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "EVENT_SUPPORT_GLOBAL_DISABLE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_EVENT_SUPPORT_GLOBAL_DISABLE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "EVENT_SUPPORT_NONE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_EVENT_SUPPORT_NONE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SENSOR_DIRECTION_UNSPECIFIED", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SENSOR_DIRECTION_UNSPECIFIED)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SENSOR_DIRECTION_INPUT", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SENSOR_DIRECTION_INPUT)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SENSOR_DIRECTION_OUTPUT", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SENSOR_DIRECTION_OUTPUT)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  SWIG_TypeClientData(SWIGTYPE_p_ipmi_sensor_t, (void*) "OpenIPMI::ipmi_sensor_t");
  SWIG_TypeClientData(SWIGTYPE_p_ipmi_sensor_id_t, (void*) "OpenIPMI::ipmi_sensor_id_t");
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CONTROL_LIGHT", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CONTROL_LIGHT)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CONTROL_RELAY", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CONTROL_RELAY)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CONTROL_DISPLAY", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CONTROL_DISPLAY)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CONTROL_ALARM", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CONTROL_ALARM)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CONTROL_RESET", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CONTROL_RESET)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CONTROL_POWER", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CONTROL_POWER)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CONTROL_FAN_SPEED", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CONTROL_FAN_SPEED)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CONTROL_IDENTIFIER", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CONTROL_IDENTIFIER)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CONTROL_ONE_SHOT_RESET", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CONTROL_ONE_SHOT_RESET)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CONTROL_OUTPUT", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CONTROL_OUTPUT)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CONTROL_ONE_SHOT_OUTPUT", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CONTROL_ONE_SHOT_OUTPUT)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CONTROL_COLOR_BLACK", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CONTROL_COLOR_BLACK)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CONTROL_COLOR_WHITE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CONTROL_COLOR_WHITE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CONTROL_COLOR_RED", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CONTROL_COLOR_RED)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CONTROL_COLOR_GREEN", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CONTROL_COLOR_GREEN)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CONTROL_COLOR_BLUE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CONTROL_COLOR_BLUE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CONTROL_COLOR_YELLOW", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CONTROL_COLOR_YELLOW)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CONTROL_COLOR_ORANGE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CONTROL_COLOR_ORANGE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CONTROL_NUM_COLORS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CONTROL_COLOR_ORANGE+1)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  SWIG_TypeClientData(SWIGTYPE_p_ipmi_control_t, (void*) "OpenIPMI::ipmi_control_t");
  SWIG_TypeClientData(SWIGTYPE_p_ipmi_control_id_t, (void*) "OpenIPMI::ipmi_control_id_t");
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CHANNEL_MEDIUM_IPMB", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CHANNEL_MEDIUM_IPMB)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CHANNEL_MEDIUM_ICMB_V10", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CHANNEL_MEDIUM_ICMB_V10)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CHANNEL_MEDIUM_ICMB_V09", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CHANNEL_MEDIUM_ICMB_V09)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CHANNEL_MEDIUM_8023_LAN", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CHANNEL_MEDIUM_8023_LAN)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CHANNEL_MEDIUM_RS232", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CHANNEL_MEDIUM_RS232)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CHANNEL_MEDIUM_OTHER_LAN", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CHANNEL_MEDIUM_OTHER_LAN)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CHANNEL_MEDIUM_PCI_SMBUS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CHANNEL_MEDIUM_PCI_SMBUS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CHANNEL_MEDIUM_SMBUS_v1", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CHANNEL_MEDIUM_SMBUS_v1)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CHANNEL_MEDIUM_SMBUS_v2", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CHANNEL_MEDIUM_SMBUS_v2)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CHANNEL_MEDIUM_USB_v1", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CHANNEL_MEDIUM_USB_v1)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CHANNEL_MEDIUM_USB_v2", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CHANNEL_MEDIUM_USB_v2)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CHANNEL_MEDIUM_SYS_INTF", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CHANNEL_MEDIUM_SYS_INTF)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CHANNEL_PROTOCOL_IPMB", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CHANNEL_PROTOCOL_IPMB)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CHANNEL_PROTOCOL_ICMB", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CHANNEL_PROTOCOL_ICMB)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CHANNEL_PROTOCOL_SMBus", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CHANNEL_PROTOCOL_SMBus)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CHANNEL_PROTOCOL_KCS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CHANNEL_PROTOCOL_KCS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CHANNEL_PROTOCOL_SMIC", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CHANNEL_PROTOCOL_SMIC)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CHANNEL_PROTOCOL_BT_v10", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CHANNEL_PROTOCOL_BT_v10)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CHANNEL_PROTOCOL_BT_v15", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CHANNEL_PROTOCOL_BT_v15)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CHANNEL_PROTOCOL_TMODE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CHANNEL_PROTOCOL_TMODE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CHANNEL_SESSION_LESS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CHANNEL_SESSION_LESS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CHANNEL_SINGLE_SESSION", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CHANNEL_SINGLE_SESSION)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CHANNEL_MULTI_SESSION", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CHANNEL_MULTI_SESSION)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CHANNEL_SESSION_BASED", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CHANNEL_SESSION_BASED)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  SWIG_TypeClientData(SWIGTYPE_p_ipmi_channel_info_t, (void*) "OpenIPMI::ipmi_channel_info_t");
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CHANNEL_ACCESS_MODE_DISABLED", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CHANNEL_ACCESS_MODE_DISABLED)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CHANNEL_ACCESS_MODE_PRE_BOOT", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CHANNEL_ACCESS_MODE_PRE_BOOT)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CHANNEL_ACCESS_MODE_ALWAYS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CHANNEL_ACCESS_MODE_ALWAYS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "CHANNEL_ACCESS_MODE_SHARED", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_CHANNEL_ACCESS_MODE_SHARED)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "PRIVILEGE_CALLBACK", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_PRIVILEGE_CALLBACK)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "PRIVILEGE_USER", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_PRIVILEGE_USER)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "PRIVILEGE_OPERATOR", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_PRIVILEGE_OPERATOR)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "PRIVILEGE_ADMIN", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_PRIVILEGE_ADMIN)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "PRIVILEGE_OEM", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_PRIVILEGE_OEM)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  SWIG_TypeClientData(SWIGTYPE_p_ipmi_channel_access_t, (void*) "OpenIPMI::ipmi_channel_access_t");
  SWIG_TypeClientData(SWIGTYPE_p_ipmi_user_t, (void*) "OpenIPMI::ipmi_user_t");
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "LANPARM_SET_IN_PROGRESS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_LANPARM_SET_IN_PROGRESS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "LANPARM_AUTH_TYPE_SUPPORT", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_LANPARM_AUTH_TYPE_SUPPORT)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "LANPARM_AUTH_TYPE_ENABLES", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_LANPARM_AUTH_TYPE_ENABLES)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "LANPARM_IP_ADDRESS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_LANPARM_IP_ADDRESS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "LANPARM_IP_ADDRESS_SRC", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_LANPARM_IP_ADDRESS_SRC)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "LANPARM_MAC_ADDRESS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_LANPARM_MAC_ADDRESS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "LANPARM_SUBNET_MASK", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_LANPARM_SUBNET_MASK)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "LANPARM_IPV4_HDR_PARMS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_LANPARM_IPV4_HDR_PARMS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "LANPARM_PRIMARY_RMCP_PORT", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_LANPARM_PRIMARY_RMCP_PORT)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "LANPARM_SECONDARY_RMCP_PORT", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_LANPARM_SECONDARY_RMCP_PORT)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "LANPARM_BMC_GENERATED_ARP_CNTL", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_LANPARM_BMC_GENERATED_ARP_CNTL)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "LANPARM_GRATUIDOUS_ARP_INTERVAL", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_LANPARM_GRATUIDOUS_ARP_INTERVAL)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "LANPARM_DEFAULT_GATEWAY_ADDR", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_LANPARM_DEFAULT_GATEWAY_ADDR)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "LANPARM_DEFAULT_GATEWAY_MAC_ADDR", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_LANPARM_DEFAULT_GATEWAY_MAC_ADDR)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "LANPARM_BACKUP_GATEWAY_ADDR", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_LANPARM_BACKUP_GATEWAY_ADDR)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "LANPARM_BACKUP_GATEWAY_MAC_ADDR", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_LANPARM_BACKUP_GATEWAY_MAC_ADDR)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "LANPARM_COMMUNITY_STRING", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_LANPARM_COMMUNITY_STRING)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "LANPARM_NUM_DESTINATIONS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_LANPARM_NUM_DESTINATIONS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "LANPARM_DEST_TYPE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_LANPARM_DEST_TYPE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "LANPARM_DEST_ADDR", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_LANPARM_DEST_ADDR)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "LANPARM_VLAN_ID", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_LANPARM_VLAN_ID)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "LANPARM_VLAN_PRIORITY", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_LANPARM_VLAN_PRIORITY)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "LANPARM_NUM_CIPHER_SUITE_ENTRIES", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_LANPARM_NUM_CIPHER_SUITE_ENTRIES)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "LANPARM_CIPHER_SUITE_ENTRY_SUPPORT", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_LANPARM_CIPHER_SUITE_ENTRY_SUPPORT)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "LANPARM_CIPHER_SUITE_ENTRY_PRIV", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_LANPARM_CIPHER_SUITE_ENTRY_PRIV)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "LANPARM_DEST_VLAN_TAG", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_LANPARM_DEST_VLAN_TAG)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  SWIG_TypeClientData(SWIGTYPE_p_ipmi_lanparm_t, (void*) "OpenIPMI::ipmi_lanparm_t");
  SWIG_TypeClientData(SWIGTYPE_p_ipmi_lan_config_t, (void*) "OpenIPMI::ipmi_lan_config_t");
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "PEFPARM_SET_IN_PROGRESS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_PEFPARM_SET_IN_PROGRESS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "PEFPARM_CONTROL", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_PEFPARM_CONTROL)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "PEFPARM_ACTION_GLOBAL_CONTROL", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_PEFPARM_ACTION_GLOBAL_CONTROL)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "PEFPARM_STARTUP_DELAY", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_PEFPARM_STARTUP_DELAY)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "PEFPARM_ALERT_STARTUP_DELAY", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_PEFPARM_ALERT_STARTUP_DELAY)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "PEFPARM_NUM_EVENT_FILTERS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_PEFPARM_NUM_EVENT_FILTERS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "PEFPARM_EVENT_FILTER_TABLE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_PEFPARM_EVENT_FILTER_TABLE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "PEFPARM_EVENT_FILTER_TABLE_DATA1", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_PEFPARM_EVENT_FILTER_TABLE_DATA1)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "PEFPARM_NUM_ALERT_POLICIES", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_PEFPARM_NUM_ALERT_POLICIES)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "PEFPARM_ALERT_POLICY_TABLE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_PEFPARM_ALERT_POLICY_TABLE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "PEFPARM_SYSTEM_GUID", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_PEFPARM_SYSTEM_GUID)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "PEFPARM_NUM_ALERT_STRINGS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_PEFPARM_NUM_ALERT_STRINGS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "PEFPARM_ALERT_STRING_KEY", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_PEFPARM_ALERT_STRING_KEY)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "PEFPARM_ALERT_STRING", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_PEFPARM_ALERT_STRING)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  SWIG_TypeClientData(SWIGTYPE_p_ipmi_pef_t, (void*) "OpenIPMI::ipmi_pef_t");
  SWIG_TypeClientData(SWIGTYPE_p_ipmi_pef_config_t, (void*) "OpenIPMI::ipmi_pef_config_t");
  SWIG_TypeClientData(SWIGTYPE_p_ipmi_pet_t, (void*) "OpenIPMI::ipmi_pet_t");
  SWIG_TypeClientData(SWIGTYPE_p_ipmi_cmdlang_t, (void*) "OpenIPMI::ipmi_cmdlang_t");
  SWIG_TypeClientData(SWIGTYPE_p_ipmi_cmdlang_event_t, (void*) "OpenIPMI::ipmi_cmdlang_event_t");
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "sol_state_closed", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(ipmi_sol_state_closed)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "sol_state_connecting", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(ipmi_sol_state_connecting)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "sol_state_connected", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(ipmi_sol_state_connected)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "sol_state_connected_ctu", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(ipmi_sol_state_connected_ctu)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "sol_state_closing", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(ipmi_sol_state_closing)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "sol_serial_alerts_fail", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(ipmi_sol_serial_alerts_fail)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "sol_serial_alerts_deferred", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(ipmi_sol_serial_alerts_deferred)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "sol_serial_alerts_succeed", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(ipmi_sol_serial_alerts_succeed)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SOL_BIT_RATE_DEFAULT", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SOL_BIT_RATE_DEFAULT)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SOL_BIT_RATE_9600", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SOL_BIT_RATE_9600)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SOL_BIT_RATE_19200", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SOL_BIT_RATE_19200)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SOL_BIT_RATE_38400", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SOL_BIT_RATE_38400)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SOL_BIT_RATE_57600", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SOL_BIT_RATE_57600)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SOL_BIT_RATE_115200", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SOL_BIT_RATE_115200)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SOL_BMC_TRANSMIT_QUEUE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SOL_BMC_TRANSMIT_QUEUE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SOL_BMC_RECEIVE_QUEUE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SOL_BMC_RECEIVE_QUEUE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SOL_MANAGEMENT_CONSOLE_TRANSMIT_QUEUE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SOL_MANAGEMENT_CONSOLE_TRANSMIT_QUEUE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SOL_MANAGEMENT_CONSOLE_RECEIVE_QUEUE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SOL_MANAGEMENT_CONSOLE_RECEIVE_QUEUE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SOL_BMC_QUEUES", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SOL_BMC_QUEUES)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SOL_MANAGEMENT_CONSOLE_QUEUES", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SOL_MANAGEMENT_CONSOLE_QUEUES)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SOL_ALL_QUEUES", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SOL_ALL_QUEUES)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  SWIG_TypeClientData(SWIGTYPE_p_ipmi_sol_conn_t, (void*) "OpenIPMI::ipmi_sol_conn_t");
  SWIG_TypeClientData(SWIGTYPE_p_ipmi_sol_config_t, (void*) "OpenIPMI::ipmi_sol_config_t");
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SOLPARM_SET_IN_PROGRESS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SOLPARM_SET_IN_PROGRESS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SOLPARM_ENABLE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SOLPARM_ENABLE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SOLPARM_AUTHENTICATION", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SOLPARM_AUTHENTICATION)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SOLPARM_CHAR_SETTINGS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SOLPARM_CHAR_SETTINGS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SOLPARM_RETRY", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SOLPARM_RETRY)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SOLPARM_NONVOLATILE_BITRATE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SOLPARM_NONVOLATILE_BITRATE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SOLPARM_VOLATILE_BITRATE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SOLPARM_VOLATILE_BITRATE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SOLPARM_PAYLOAD_CHANNEL", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SOLPARM_PAYLOAD_CHANNEL)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "SOLPARM_PAYLOAD_PORT_NUMBER", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_SOLPARM_PAYLOAD_PORT_NUMBER)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  SWIG_TypeClientData(SWIGTYPE_p_ipmi_solparm_t, (void*) "OpenIPMI::ipmi_solparm_t");
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ebadf", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(EBADF)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "einval", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(EINVAL)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "e2big", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(E2BIG)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "enomem", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(ENOMEM)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "enoent", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(ENOENT)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ecanceled", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(ECANCELED)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "enosys", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(ENOSYS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "eexist", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(EEXIST)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "eagain", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(EAGAIN)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "eperm", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(EPERM)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "EVENT_NOT_HANDLED", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_EVENT_NOT_HANDLED)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "EVENT_HANDLED", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_EVENT_HANDLED)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "EVENT_HANDLED_PASS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_EVENT_HANDLED_PASS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "TIMEOUT_FOREVER", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_long_SS_long  SWIG_PERL_CALL_ARGS_1((long long)(IPMI_TIMEOUT_FOREVER)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_UNSPECIFIED", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_UNSPECIFIED)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_OTHER", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_OTHER)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_UNKOWN", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_UNKOWN)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_PROCESSOR", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_PROCESSOR)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_DISK", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_DISK)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_PERIPHERAL", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_PERIPHERAL)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_SYSTEM_MANAGEMENT_MODULE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_SYSTEM_MANAGEMENT_MODULE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_SYSTEM_BOARD", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_SYSTEM_BOARD)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_MEMORY_MODULE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_MEMORY_MODULE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_PROCESSOR_MODULE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_PROCESSOR_MODULE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_POWER_SUPPLY", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_POWER_SUPPLY)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_ADD_IN_CARD", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_ADD_IN_CARD)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_FRONT_PANEL_BOARD", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_FRONT_PANEL_BOARD)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_BACK_PANEL_BOARD", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_BACK_PANEL_BOARD)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_POWER_SYSTEM_BOARD", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_POWER_SYSTEM_BOARD)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_DRIVE_BACKPLANE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_DRIVE_BACKPLANE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_SYSTEM_INTERNAL_EXPANSION_BOARD", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_SYSTEM_INTERNAL_EXPANSION_BOARD)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_OTHER_SYSTEM_BOARD", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_OTHER_SYSTEM_BOARD)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_PROCESSOR_BOARD", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_PROCESSOR_BOARD)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_POWER_UNIT", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_POWER_UNIT)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_POWER_MODULE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_POWER_MODULE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_POWER_MANAGEMENT_BOARD", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_POWER_MANAGEMENT_BOARD)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_CHASSIS_BACK_PANEL_BOARD", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_CHASSIS_BACK_PANEL_BOARD)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_SYSTEM_CHASSIS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_SYSTEM_CHASSIS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_SUB_CHASSIS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_SUB_CHASSIS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_OTHER_CHASSIS_BOARD", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_OTHER_CHASSIS_BOARD)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_DISK_DRIVE_BAY", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_DISK_DRIVE_BAY)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_PERIPHERAL_BAY", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_PERIPHERAL_BAY)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_DEVICE_BAY", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_DEVICE_BAY)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_FAN_COOLING", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_FAN_COOLING)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_COOLING_UNIT", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_COOLING_UNIT)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_CABLE_INTERCONNECT", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_CABLE_INTERCONNECT)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_MEMORY_DEVICE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_MEMORY_DEVICE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_SYSTEM_MANAGEMENT_SOFTWARE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_SYSTEM_MANAGEMENT_SOFTWARE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_BIOS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_BIOS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_OPERATING_SYSTEM", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_OPERATING_SYSTEM)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_SYSTEM_BUS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_SYSTEM_BUS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_GROUP", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_GROUP)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_REMOTE_MGMT_COMM_DEVICE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_REMOTE_MGMT_COMM_DEVICE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_EXTERNAL_ENVIRONMENT", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_EXTERNAL_ENVIRONMENT)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_BATTERY", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_BATTERY)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_PROCESSING_BLADE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_PROCESSING_BLADE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_CONNECTIVITY_SWITCH", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_CONNECTIVITY_SWITCH)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_PROCESSOR_MEMORY_MODULE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_PROCESSOR_MEMORY_MODULE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_IO_MODULE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_IO_MODULE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_PROCESSOR_IO_MODULE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_PROCESSOR_IO_MODULE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_MGMT_CONTROLLER_FIRMWARE", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_MGMT_CONTROLLER_FIRMWARE)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_IPMI_CHANNEL", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_IPMI_CHANNEL)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_PCI_BUS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_PCI_BUS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_PCI_EXPRESS_BUS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_PCI_EXPRESS_BUS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_SCSI_BUS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_SCSI_BUS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_SATA_SAS_BUS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_SATA_SAS_BUS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  /*@SWIG:/usr/share/swig/4.4.0/perl5/perltypemaps.swg,67,%set_constant@*/ do {
    SV *sv = get_sv((char*) SWIG_prefix "ENTITY_ID_PROCESSOR_FRONT_SIDE_BUS", TRUE | 0x2 | GV_ADDMULTI);
    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(IPMI_ENTITY_ID_PROCESSOR_FRONT_SIDE_BUS)));
    SvREADONLY_on(sv);
  } while(0) /*@SWIG@*/;
  ST(0) = &PL_sv_yes;
  XSRETURN(1);
}

