From 2a034138d452d331001f5af1d34db08ee6085d2b Mon Sep 17 00:00:00 2001 From: Mark Stapp Date: Thu, 8 Apr 2021 08:56:32 -0400 Subject: [PATCH] lib: use platform-neutral value for TCP MD5 signature len Use a pcep-specific value for MD5SIG_MAXLEN, use the OS value if present. Signed-off-by: Mark Stapp --- pathd/path_pcep.h | 2 +- pceplib/pcep.h | 14 ++++++++++---- pceplib/pcep_pcc.c | 2 +- pceplib/pcep_session_logic.h | 2 +- pceplib/pcep_socket_comm.h | 6 +++--- 5 files changed, 16 insertions(+), 10 deletions(-) diff --git a/pathd/path_pcep.h b/pathd/path_pcep.h index 654d089cb..d0af674ff 100644 --- a/pathd/path_pcep.h +++ b/pathd/path_pcep.h @@ -84,7 +84,7 @@ DECLARE_MTYPE(PCEP); struct pcep_config_group_opts { char name[64]; - char tcp_md5_auth[TCP_MD5SIG_MAXKEYLEN]; + char tcp_md5_auth[PCEP_MD5SIG_MAXKEYLEN]; struct ipaddr source_ip; short source_port; bool draft07; diff --git a/pceplib/pcep.h b/pceplib/pcep.h index 278ab9d5d..b5d02c7e6 100644 --- a/pceplib/pcep.h +++ b/pceplib/pcep.h @@ -28,12 +28,10 @@ #endif #if defined(linux) || defined(GNU_LINUX) -//#include + #define ipv6_u __in6_u #else -// bsd family -#define TCP_MD5SIG_MAXKEYLEN 80 -//#include +/* bsd family */ #define ipv6_u __u6_addr #ifdef __FreeBSD__ #include @@ -45,4 +43,12 @@ #include #include #include + +/* Cross-compilation seems to have trouble finding this */ +#if defined(TCP_MD5SIG_MAXKEYLEN) +#define PCEP_MD5SIG_MAXKEYLEN TCP_MD5SIG_MAXKEYLEN +#else +#define PCEP_MD5SIG_MAXKEYLEN 80 +#endif + #endif diff --git a/pceplib/pcep_pcc.c b/pceplib/pcep_pcc.c index 1a702a8b6..d263f64f3 100644 --- a/pceplib/pcep_pcc.c +++ b/pceplib/pcep_pcc.c @@ -53,7 +53,7 @@ struct cmd_line_args { char dest_ip_str[MAX_DST_IP_STR]; short src_tcp_port; short dest_tcp_port; - char tcp_md5_str[TCP_MD5SIG_MAXKEYLEN]; /* RFC 2385 */ + char tcp_md5_str[PCEP_MD5SIG_MAXKEYLEN]; /* RFC 2385 */ bool is_ipv6; bool eventpoll; /* poll for pcep_event's, or use callback (default) */ }; diff --git a/pceplib/pcep_session_logic.h b/pceplib/pcep_session_logic.h index a082ec66d..9cdec5250 100644 --- a/pceplib/pcep_session_logic.h +++ b/pceplib/pcep_session_logic.h @@ -122,7 +122,7 @@ typedef struct pcep_configuration_ { struct pcep_versioning *pcep_msg_versioning; - char tcp_authentication_str[TCP_MD5SIG_MAXKEYLEN]; + char tcp_authentication_str[PCEP_MD5SIG_MAXKEYLEN]; bool is_tcp_auth_md5; /* true: RFC 2385, false: RFC 5925 */ } pcep_configuration; diff --git a/pceplib/pcep_socket_comm.h b/pceplib/pcep_socket_comm.h index 797ffda86..89d249291 100644 --- a/pceplib/pcep_socket_comm.h +++ b/pceplib/pcep_socket_comm.h @@ -91,9 +91,9 @@ typedef struct pcep_socket_comm_session_ { int received_bytes; bool close_after_write; void *external_socket_data; /* used for external socket infra */ - char tcp_authentication_str[TCP_MD5SIG_MAXKEYLEN - + 1]; /* should be used with is_tcp_auth_md5 - flag */ + /* should be used with is_tcp_auth_md5 flag */ + char tcp_authentication_str[PCEP_MD5SIG_MAXKEYLEN + 1]; + bool is_tcp_auth_md5; /* flag to distinguish between rfc 2385 (md5) and rfc 5925 (tcp-ao) */ -- 2.39.5