|
|
#ifndef __OSPFCFG_H__
#define __OSPFCFG_H__
// ospf_cfg.h
// structure types
#define OSPF_END_PARAM_TYPE 0
#define OSPF_GLOBAL_PARAM_TYPE 1
#define OSPF_AREA_PARAM_TYPE 2
#define OSPF_AREA_RANGE_PARAM_TYPE 3
#define OSPF_INTF_PARAM_TYPE 4
#define OSPF_NEIGHBOR_PARAM_TYPE 5
#define OSPF_VIRT_INTF_PARAM_TYPE 6
#define OSPF_ROUTE_FILTER_PARAM_TYPE 7
#define OSPF_PROTOCOL_FILTER_PARAM_TYPE 8
#define OSPF_LOGGING_NONE ((DWORD) 0)
#define OSPF_LOGGING_ERROR ((DWORD) 1)
#define OSPF_LOGGING_WARN ((DWORD) 2)
#define OSPF_LOGGING_INFO ((DWORD) 3)
#define OSPF_LOGGING_MAX_VALUE OSPF_LOGGING_INFO
#define OSPF_LOGGING_MIN_VALUE OSPF_LOGGING_NONE
#define OSPF_LOGGING_DEFAULT OSPF_LOGGING_WARN
// Global Parameters
typedef struct _OSPF_GLOBAL_PARAM { DWORD type; // OSPF_GLOBAL_PARAM_TYPE
DWORD create; // 1 = created, 2 = deleted
DWORD enable; // 1 = enable, 2 = disable
DWORD routerId; DWORD ASBrdrRtr; // 1 = yes, 2 = no
DWORD logLevel; // One of the above
}OSPF_GLOBAL_PARAM, *POSPF_GLOBAL_PARAM;
// Area Parameters
typedef struct _OSPF_AREA_PARAM { DWORD type; // OSPF_AREA_PARAM_TYPE
DWORD create; // 1 = created, 2 = deleted
DWORD enable; // 1 = enable, 2 = disable
DWORD areaId; DWORD authType; // 1 = none, 2 = simple password
DWORD importASExtern; // 1 = yes, 2 = no
DWORD stubMetric; DWORD importSumAdv; // 1 = yes, 2 = no
}OSPF_AREA_PARAM, *POSPF_AREA_PARAM;
// Area Range Parameters
typedef struct _OSPF_AREA_RANGE_PARAM { DWORD type; // OSPF_AREA_RANGE_PARAM_TYPE
DWORD create; // 1 = created, 2 = deleted
DWORD enable; // 1 = enable, 2 = disable
DWORD areaId; DWORD rangeNet; DWORD rangeMask; }OSPF_AREA_RANGE_PARAM, *POSPF_AREA_RANGE_PARAM;
// Interface Parameters
typedef struct _OSPF_INTERFACE_PARAM { DWORD type; // OSPF_INTF_PARAM_TYPE
DWORD create; // 1 = created, 2 = deleted
DWORD enable; // 1 = enable, 2 = disable
DWORD intfIpAddr; DWORD intfSubnetMask; DWORD areaId; DWORD intfType; // 1 = broadcast, 2 = NBMA,
// 3 = point-to-point
DWORD routerPriority; DWORD transitDelay; DWORD retransInterval; DWORD helloInterval; DWORD deadInterval; DWORD pollInterval; DWORD metricCost; BYTE password[8]; DWORD mtuSize; }OSPF_INTERFACE_PARAM, *POSPF_INTERFACE_PARAM;
// NBMA Neighbor Parameters
typedef struct _OSPF_NBMA_NEIGHBOR_PARAM { DWORD type; // OSPF_NEIGHBOR_PARAM_TYPE
DWORD create; // 1 = created, 2 = deleted
DWORD enable; // 1 = enable, 2 = disable
DWORD neighborIpAddr; DWORD intfIpAddr; DWORD neighborPriority; }OSPF_NBMA_NEIGHBOR_PARAM, *POSPF_NBMA_NEIGHBOR_PARAM;
// Virtual Interface Parameters
typedef struct _OSPF_VIRT_INTERFACE_PARAM { DWORD type; // OSPF_VIRT_INTF_PARAM_TYPE
DWORD create; // 1 = created, 2 = deleted
DWORD enable; // 1 = enable, 2 = disable
DWORD transitAreaId; DWORD virtNeighborRouterId; DWORD transitDelay; DWORD retransInterval; DWORD helloInterval; DWORD deadInterval; BYTE password[8]; }OSPF_VIRT_INTERFACE_PARAM, *POSPF_VIRT_INTERFACE_PARAM;
typedef struct _OSPF_ROUTE_FILTER { DWORD dwAddress; DWORD dwMask; }OSPF_ROUTE_FILTER, *POSPF_ROUTE_FILTER;
typedef enum _OSPF_FILTER_ACTION { ACTION_DROP = 0, ACTION_ACCEPT = 1 }OSPF_FILTER_ACTION, *POSPF_FILTER_ACTION;
typedef struct _OSPF_ROUTE_FILTER_INFO { DWORD type; OSPF_FILTER_ACTION ofaActionOnMatch; DWORD dwNumFilters; OSPF_ROUTE_FILTER pFilters[1]; }OSPF_ROUTE_FILTER_INFO, *POSPF_ROUTE_FILTER_INFO;
#define SIZEOF_OSPF_ROUTE_FILTERS(X) \
(FIELD_OFFSET(OSPF_ROUTE_FILTER_INFO, pFilters[0]) + ((X) * sizeof(OSPF_ROUTE_FILTER)))
typedef struct _OSPF_PROTO_FILTER_INFO { DWORD type; OSPF_FILTER_ACTION ofaActionOnMatch; DWORD dwNumFilters; DWORD pdwProtoId[1]; }OSPF_PROTO_FILTER_INFO, *POSPF_PROTO_FILTER_INFO;
#define SIZEOF_OSPF_PROTO_FILTERS(X) \
(FIELD_OFFSET(OSPF_PROTO_FILTER_INFO, pdwProtoId[0]) + ((X) * sizeof(DWORD)))
#endif //__OSPFCFG_H__
|