#ifndef _LIBDLBRIDGE_H
#define _LIBDLBRIDGE_H
#include <sys/types.h>
#include <libdladm.h>
#include <uid_stp.h>
#include <net/bridge.h>
#include <net/trill.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef enum {
DLADM_BRIDGE_PROT_UNKNOWN = 0,
DLADM_BRIDGE_PROT_STP,
DLADM_BRIDGE_PROT_TRILL
} dladm_bridge_prot_t;
extern dladm_status_t dladm_bridge_str2prot(const char *,
dladm_bridge_prot_t *);
extern const char *dladm_bridge_prot2str(dladm_bridge_prot_t);
extern dladm_status_t dladm_bridge_get_properties(const char *,
UID_STP_CFG_T *, dladm_bridge_prot_t *);
extern dladm_status_t dladm_bridge_run_properties(const char *,
UID_STP_CFG_T *, dladm_bridge_prot_t *);
extern dladm_status_t dladm_bridge_configure(dladm_handle_t, const char *,
const UID_STP_CFG_T *, dladm_bridge_prot_t, uint32_t);
extern dladm_status_t dladm_bridge_enable(const char *);
extern dladm_status_t dladm_bridge_delete(dladm_handle_t, const char *,
uint32_t);
extern dladm_status_t dladm_bridge_state(const char *, UID_STP_STATE_T *);
extern datalink_id_t *dladm_bridge_get_portlist(const char *, uint_t *);
extern void dladm_bridge_free_portlist(datalink_id_t *);
extern dladm_status_t dladm_bridge_setlink(dladm_handle_t, datalink_id_t,
const char *);
extern dladm_status_t dladm_bridge_getlink(dladm_handle_t, datalink_id_t,
char *, size_t);
extern dladm_status_t dladm_bridge_link_state(dladm_handle_t, datalink_id_t,
UID_STP_PORT_STATE_T *);
extern boolean_t dladm_valid_bridgename(const char *);
extern boolean_t dladm_observe_to_bridge(char *);
extern bridge_listfwd_t *dladm_bridge_get_fwdtable(dladm_handle_t, const char *,
uint_t *);
extern void dladm_bridge_free_fwdtable(bridge_listfwd_t *);
extern trill_listnick_t *dladm_bridge_get_trillnick(const char *, uint_t *);
extern void dladm_bridge_free_trillnick(trill_listnick_t *);
extern uint16_t dladm_bridge_get_nick(const char *);
extern void dladm_bridge_set_nick(const char *, uint16_t);
extern dladm_status_t dladm_bridge_get_privprop(const char *,
boolean_t *, uint32_t *);
extern dladm_status_t dladm_bridge_get_port_cfg(dladm_handle_t, datalink_id_t,
int, int *);
extern dladm_status_t dladm_bridge_get_forwarding(dladm_handle_t,
datalink_id_t, uint_t *);
extern dladm_status_t dladm_bridge_refresh(dladm_handle_t, datalink_id_t);
#define DOOR_DIRNAME "/var/run/bridge_door"
typedef enum bridge_door_type_e {
bdcBridgeGetConfig,
bdcBridgeGetState,
bdcBridgeGetPorts,
bdcBridgeGetRefreshCount,
bdcPortGetConfig,
bdcPortGetState,
bdcPortGetForwarding
} bridge_door_type_t;
typedef struct bridge_door_cmd_s {
bridge_door_type_t bdc_type;
datalink_id_t bdc_linkid;
} bridge_door_cmd_t;
typedef struct bridge_door_cfg_s {
UID_STP_CFG_T bdcf_cfg;
dladm_bridge_prot_t bdcf_prot;
} bridge_door_cfg_t;
#ifdef __cplusplus
}
#endif
#endif