/* * This file and its contents are supplied under the terms of the * Common Development and Distribution License ("CDDL"), version 1.0. * You may only use this file in accordance with the terms of version * 1.0 of the CDDL. * * A full copy of the text of the CDDL should have accompanied this * source. A copy of the CDDL is also available via the Internet at * http://www.illumos.org/license/CDDL. */ /* * Copyright (c) 2012 Joyent, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _LIBIPD_H #define _LIBIPD_H #include #ifdef __cplusplus extern "C" { #endif /* * Bitmask values for ic_mask. */ #define IPDM_CORRUPT 0x1000 #define IPDM_DELAY 0x2000 #define IPDM_DROP 0x4000 typedef enum ipd_errno { EIPD_NOERROR = 0, EIPD_NOMEM, EIPD_ZC_NOENT, EIPD_RANGE, EIPD_PERM, EIPD_FAULT, EIPD_INTERNAL, EIPD_UNKNOWN } ipd_errno_t; typedef struct ipd_config { uint32_t ic_mask; uint32_t ic_corrupt; uint32_t ic_drop; uint32_t ic_delay; } ipd_config_t; struct ipd_stat; typedef struct ipd_stat *ipd_stathdl_t; typedef void (*ipd_status_cb_f)(zoneid_t, const ipd_config_t *, void *); extern __thread ipd_errno_t ipd_errno; extern __thread char ipd_errmsg[]; extern const char *ipd_strerror(ipd_errno_t); extern int ipd_open(const char *); extern int ipd_close(int); extern int ipd_status_read(int, ipd_stathdl_t *); extern void ipd_status_foreach_zone(const ipd_stathdl_t, ipd_status_cb_f, void *); extern int ipd_status_get_config(const ipd_stathdl_t, zoneid_t, ipd_config_t **); extern void ipd_status_free(ipd_stathdl_t); extern int ipd_ctl(int, zoneid_t, const ipd_config_t *); #ifdef __cplusplus } #endif #endif /* _LIBIPD_H */