view extensions/app_radgw/CMakeLists.txt @ 1517:9e233ef0b07e

Add 3GPP TS 29.283 V15.1.0 (2019-09) Add AVPs: - MCPTT-ID, UTF8String, code 4500, section 7.3.2 - Data-Identification, Grouped, code 4501, section 7.3.3 - Data-Identification-Prefix, Unsigned32, code 4502, section 7.3.11 - Data-Identification-Flags, Unsigned64, code 4503, section 7.3.12 - DPR-Flags, Unsigned32, code 4504, section 7.3.13 - DPA-Flags, Unsigned32, code 4505, section 7.3.14 - DUR-Flags, Unsigned32, code 4506, section 7.3.15 - DUA-Flags, Unsigned32, code 4507, section 7.3.16 - NDR-Flags, Unsigned32, code 4508, section 7.3.17 - NDA-Flags, Unsigned32, code 4509, section 7.3.18 - User-Data-Id, Unsigned32, code 4510, section 7.3.19 - MC-Service-User-Profile-Data, Grouped, code 4511, section 7.3.20 - Sequence-Number-29.283, Unsigned32, code 4512, section 7.3.21 - Data, Grouped, code 4513, section 7.3.22 - MCVideo-ID, UTF8String, code 4514, section 7.3.24 - MCData-ID, UTF8String, code 4515, section 7.3.25 Note: Name conflict with 3GPP TS 29.140 Sequence-Number (1107). and 3GPP TS 29.329 Sequence-Number (716). 3GPP TS 29.140 V6.1.0 (2005-06) allocated Sequence-Number (1107). 3GPP TS 29.329 V10.0.0 (2010-09) CR 0163 added Sequence-Number (716). 3GPP TS 29.283 V13.1.0 (2016-06) allocated Sequence-Number (4512). Fix: Sequence-Number (4512) renamed to Sequence-Number-29.283 (4512).
author Luke Mewburn <luke@mewburn.net>
date Thu, 09 Apr 2020 10:32:09 +1000
parents b415d1384e0d
children
line wrap: on
line source

# The app_radgw extension
PROJECT("RADIUS/Diameter extensible gateway application for freeDiameter" C)


########### Main app_radgw extension #############

# Parser files
BISON_FILE(rgw_conf.y)
FLEX_FILE(rgw_conf.l)
SET_SOURCE_FILES_PROPERTIES(lex.rgw_conf.c rgw_conf.tab.c PROPERTIES COMPILE_FLAGS "-I ${CMAKE_CURRENT_SOURCE_DIR}")

# List of source files
SET( RGW_DEFAULT_SRC
	radius.c
	md5.c
	rgw_msg_codes.c
	rgw_msg_attrtype.c
	rgw_main.c
	lex.rgw_conf.c
	rgw_conf.tab.c
	rgw_conf.tab.h
	rgw_clients.c
	rgw_plugins.c
	rgw_servers.c
	rgw_worker.c
)

SET( RG_COMMON_HEADER
	rgw_common.h
	radius.h
	md5.h
	hostap_compat.h
)

# Compile these files as a freeDiameter extension.
FD_ADD_EXTENSION(app_radgw ${RGW_DEFAULT_SRC} ${RG_COMMON_HEADER})


########### RADIUS/Diameter translation agent plugins (support for RADIUS protocol) ############
# Use the macro RGWX_ADD_PLUGIN(name files...) to create a plugin.
# It is equivalent to add_library with the appropriate parameters
# and naming conventions (.rgwx : Radius GateWay eXtension)
MACRO(RGWX_ADD_PLUGIN PLGNAME)
  ADD_LIBRARY(${PLGNAME} MODULE ${ARGN})
  SET_TARGET_PROPERTIES(${PLGNAME} PROPERTIES PREFIX "" )
  SET_TARGET_PROPERTIES(${PLGNAME} PROPERTIES SUFFIX ".rgwx" )
  INSTALL(TARGETS ${PLGNAME}
	LIBRARY DESTINATION ${INSTALL_EXTENSIONS_SUFFIX}
	COMPONENT freeDiameter-radius-gateway)
ENDMACRO(RGWX_ADD_PLUGIN)

# Ask unless ALL_EXTENSIONS is set:
MACRO(FD_OPTION_PLUGIN PLGVAR DESCR DEFLT)
   IF (NOT ALL_EXTENSIONS)
     OPTION(BUILD_${PLGVAR} ${DESCR} ${DEFLT})
   ENDIF (NOT ALL_EXTENSIONS)
   IF (BUILD_${PLGVAR} OR ALL_EXTENSIONS)
     SET(${PLGVAR} TRUE)
   ELSE (BUILD_${PLGVAR} OR ALL_EXTENSIONS)
     SET(${PLGVAR} FALSE)
   ENDIF (BUILD_${PLGVAR} OR ALL_EXTENSIONS)
ENDMACRO(FD_OPTION_PLUGIN PLGVAR DESCR DEFLT)


### Debug 
# Example of plugin:

FD_OPTION_PLUGIN(RGWX_SAMPLE "Build sample plugin? (for developers only)" OFF)
 	IF (RGWX_SAMPLE)
 	   RGWX_ADD_PLUGIN(sample ${RG_COMMON_HEADER} rgwx_sample.c)
 	ENDIF (RGWX_SAMPLE)

# A plugin for debug: dumps RADIUS and Diameter messages state at the time the plugin is called.
FD_OPTION_PLUGIN(RGWX_DEBUG "Build debug plugin? (display status of RADIUS and Diameter messages)" ON)
 	IF (RGWX_DEBUG)
 	   RGWX_ADD_PLUGIN(debug ${RG_COMMON_HEADER} rgwx_debug.c)
 	ENDIF (RGWX_DEBUG)


### Authentication, Authorization messages translation.
FD_OPTION_PLUGIN(RGWX_AUTH "Build Authentication & Authorization RADIUS translation plugin? (RFC2865, RFC3579)" ON)
	IF (RGWX_AUTH)
 	   RGWX_ADD_PLUGIN(auth ${RG_COMMON_HEADER} rgwx_auth.c)
	ENDIF (RGWX_AUTH)

### SIP Authentication, Authorization messages translation.
FD_OPTION_PLUGIN(RGWX_SIP "Build SIP RADIUS translation plugin? (RFC4740 or RFC5090)" OFF)
        IF (RGWX_SIP)
           RGWX_ADD_PLUGIN(sip ${RG_COMMON_HEADER} rgwx_sip.c)
        ENDIF (RGWX_SIP)



### Accounting messages translation.
FD_OPTION_PLUGIN(RGWX_ACCT "Build Accounting RADIUS translation plugin? (RFC2866)" ON)
	IF (RGWX_ACCT)
 	   RGWX_ADD_PLUGIN(acct ${RG_COMMON_HEADER} rgwx_acct.c)
	ENDIF (RGWX_ACCT)


### Generic plugin to handle some attributes (either delete them or simply echo them in the answer) 
FD_OPTION_PLUGIN(RGWX_ECHODROP "Build 'echo/drop' plugin? (drop specific RADIUS attributes or echo them in RADIUS answer)" ON)
  	IF (RGWX_ECHODROP)
  	   BISON_FILE(rgwx_echodrop.y)
  	   FLEX_FILE(rgwx_echodrop.l)
  	   SET_SOURCE_FILES_PROPERTIES(lex.rgwx_echodrop.c rgwx_echodrop.tab.c PROPERTIES COMPILE_FLAGS "-I ${CMAKE_CURRENT_SOURCE_DIR}")
 	   RGWX_ADD_PLUGIN(echodrop ${RG_COMMON_HEADER} rgwx_echodrop.h rgwx_echodrop.c lex.rgwx_echodrop.c rgwx_echodrop.tab.c rgwx_echodrop.tab.h )
  	ENDIF (RGWX_ECHODROP)
	
	
####
## INSTALL section ##

INSTALL(TARGETS app_radgw
	LIBRARY DESTINATION ${INSTALL_EXTENSIONS_SUFFIX}
	COMPONENT freeDiameter-radius-gateway)
	
# Note that all compiled plugins are added by the RGWX_ADD_PLUGIN macro in the component freeDiameter-radius-gateway as well.
"Welcome to our mercurial repository"