ha/service-mgmt/sm-common/src/sm_hw.h

146 lines
4.4 KiB
C

//
// Copyright (c) 2014,2023 Wind River Systems, Inc.
//
// SPDX-License-Identifier: Apache-2.0
//
#ifndef __SM_HW_H__
#define __SM_HW_H__
#include <stdbool.h>
#include <stdint.h>
#include "sm_limits.h"
#include "sm_types.h"
#ifdef __cplusplus
extern "C" {
#endif
#define SM_HW_QDISC_TYPE_MAX_CHAR 32
#define SM_HW_QDISC_HANDLE_MAX_CHAR 32
typedef struct
{
char interface_name[SM_INTERFACE_NAME_MAX_CHAR];
char queue_type[SM_HW_QDISC_TYPE_MAX_CHAR];
char handle[SM_HW_QDISC_HANDLE_MAX_CHAR];
uint64_t bytes;
uint64_t packets;
uint64_t q_length;
uint64_t backlog;
uint64_t drops;
uint64_t requeues;
uint64_t overlimits;
} SmHwQdiscInfoT;
typedef enum
{
SM_HW_INTERFACE_CHANGE_TYPE_UNKNOWN,
SM_HW_INTERFACE_CHANGE_TYPE_ADD,
SM_HW_INTERFACE_CHANGE_TYPE_DELETE,
} SmHwInterfaceChangeTypeT;
typedef struct
{
SmHwInterfaceChangeTypeT type;
char interface_name[SM_INTERFACE_NAME_MAX_CHAR];
SmInterfaceStateT interface_state;
} SmHwInterfaceChangeDataT;
typedef enum
{
SM_HW_IP_CHANGE_TYPE_UNKNOWN,
SM_HW_IP_CHANGE_TYPE_ADD,
SM_HW_IP_CHANGE_TYPE_DELETE,
} SmHwIpChangeTypeT;
typedef enum
{
SM_HW_ADDRESS_TYPE_UNKNOWN,
SM_HW_ADDRESS_TYPE_ADDRESS,
SM_HW_ADDRESS_TYPE_LOCAL,
SM_HW_ADDRESS_TYPE_BROADCAST,
SM_HW_ADDRESS_TYPE_ANYCAST,
} SmHwAddressTypeT;
typedef struct
{
SmHwIpChangeTypeT type;
char interface_name[SM_INTERFACE_NAME_MAX_CHAR];
SmHwAddressTypeT address_type;
SmNetworkAddressT address;
int prefix_len;
} SmHwIpChangeDataT;
typedef void (*SmHwQdiscInfoCallbackT) (SmHwQdiscInfoT* data);
typedef void (*SmHwInterfaceChangeCallbackT) (SmHwInterfaceChangeDataT* data );
typedef void (*SmHwIpChangeCallbackT) (SmHwIpChangeDataT* data);
typedef struct
{
SmHwQdiscInfoCallbackT qdisc_info;
SmHwInterfaceChangeCallbackT interface_change;
SmHwIpChangeCallbackT ip_change;
} SmHwCallbacksT;
// ***************************************************************************
// Hardware - Get Interface By Network Address
// ===========================================
extern SmErrorT sm_hw_get_if_by_network_address(
SmNetworkAddressT* network_address, char if_name[] );
// ***************************************************************************
// ***************************************************************************
// Hardware - Get Interface Index
// ==============================
extern SmErrorT sm_hw_get_if_index( const char if_name[], int* if_index );
// ***************************************************************************
// ***************************************************************************
// Hardware - Get Interface Name
// =============================
extern SmErrorT sm_hw_get_if_name( int if_index, char if_name[] );
// ***************************************************************************
// ***************************************************************************
// Sm Hardware - Get Interface State
// =================================
extern SmErrorT sm_hw_get_if_state( const char if_name[], bool* enabled );
// ***************************************************************************
// ***************************************************************************
// Sm Hardware - Get All QDisc Asynchronous
// ========================================
extern SmErrorT sm_hw_get_all_qdisc_async( void );
// ***************************************************************************
// ***************************************************************************
// Hardware - Initialize
// =====================
extern SmErrorT sm_hw_initialize( SmHwCallbacksT* callbacks );
// ***************************************************************************
// ***************************************************************************
// Hardware - Finalize
// ===================
extern SmErrorT sm_hw_finalize( void );
// ***************************************************************************
// ****************************************************************************
// initialize mutex
// ==============
extern SmErrorT sm_hw_mutex_initialize ( void );
// ****************************************************************************
// ****************************************************************************
// destroy mutex
// ==============
extern SmErrorT sm_hw_mutex_finalize ( void );
// ****************************************************************************
#ifdef __cplusplus
}
#endif
#endif // __SM_HW_H__