sockadd2str is c90 compliant

FossilOrigin-Name: 6336ae782e53db768fb7edb6b784c2c2abed4f45b0b1da98a24ac34f7360187f
This commit is contained in:
7u83@mail.ru
2018-03-05 11:23:16 +00:00
parent aa8932b770
commit fdbfe8af32
18 changed files with 107 additions and 77 deletions

View File

@ -181,13 +181,14 @@ static int check_len(struct conn *conn, struct cw_action_in *a, uint8_t * data,
static struct cw_MsgSet *load_msg_set(struct conn *conn, uint8_t * rawmsg, int len,
int elems_len, struct sockaddr *from)
{
char sock_buf[SOCK_ADDR_BUFSIZE];
struct cw_Mod *cmod =
cw_mod_detect(conn, rawmsg, len, elems_len, from, CW_MOD_MODE_CAPWAP);
if (cmod == MOD_NULL) {
cw_dbg(DBG_MSG_ERR,
"Can't find mod to handle connection from %s, discarding message",
sock_addr2str_p(from));
sock_addr2str_p(from,sock_buf));
return NULL;
}
@ -219,6 +220,7 @@ int cw_in_check_generic(struct conn *conn, struct cw_action_in *a, uint8_t * dat
static int process_elements(struct conn *conn, uint8_t * rawmsg, int len,
struct sockaddr *from)
{
char sock_buf[SOCK_ADDR_BUFSIZE];
struct cw_action_in as, *af, *afm;
int offset = cw_get_hdr_msg_offset(rawmsg);
@ -236,7 +238,7 @@ static int process_elements(struct conn *conn, uint8_t * rawmsg, int len,
if (conn->strict_hdr) {
cw_dbg(DBG_MSG_ERR,
"Discarding message from %s, msgelems len=%d, payload len=%d, (Strict CAPWAP) ",
sock_addr2str(&conn->addr), elems_len, payloadlen - 8);
sock_addr2str(&conn->addr,sock_buf), elems_len, payloadlen - 8);
errno = EAGAIN;
return -1;
}
@ -245,7 +247,7 @@ static int process_elements(struct conn *conn, uint8_t * rawmsg, int len,
if (elems_len < payloadlen - 8) {
cw_dbg(DBG_RFC,
"Packet from from %s has %d bytes of extra data, ignoring.",
sock_addr2str(&conn->addr), payloadlen - 8 - elems_len);
sock_addr2str(&conn->addr,sock_buf), payloadlen - 8 - elems_len);
elems_len = len - 8;
}
@ -253,7 +255,7 @@ static int process_elements(struct conn *conn, uint8_t * rawmsg, int len,
cw_dbg(DBG_RFC,
"Packet from from %s has msgelems len of %d bytes, but has only %d bytes of data, truncating.",
sock_addr2str(&conn->addr), elems_len, payloadlen - 8);
sock_addr2str(&conn->addr, sock_buf), elems_len, payloadlen - 8);
elems_len = payloadlen - 8;
}
}
@ -487,7 +489,7 @@ static int process_elements(struct conn *conn, uint8_t * rawmsg, int len,
int process_message(struct conn *conn, uint8_t * rawmsg, int rawlen,
struct sockaddr *from)
{
char sock_buf[SOCK_ADDR_BUFSIZE];
uint8_t *msgptr = rawmsg + cw_get_hdr_msg_offset(rawmsg);
@ -517,7 +519,7 @@ int process_message(struct conn *conn, uint8_t * rawmsg, int rawlen,
if (sd != 0) {
cw_dbg(DBG_MSG_ERR,
"Discarding message from %s, old seqnum, seqnum = %d, last seqnum=%d",
sock_addr2str(&conn->addr), s2, s1);
sock_addr2str(&conn->addr,sock_buf), s2, s1);
errno = EAGAIN;
return -1;
}
@ -528,7 +530,7 @@ int process_message(struct conn *conn, uint8_t * rawmsg, int rawlen,
cw_dbg(DBG_MSG_ERR,
"Retransmitted request message from %s detected, seqnum=%d, type=%d",
sock_addr2str(&conn->addr), s2, type);
sock_addr2str(&conn->addr,sock_buf), s2, type);
if (cw_get_hdr_msg_type(conn->resp_buffer) - 1 != type) {
@ -540,7 +542,7 @@ int process_message(struct conn *conn, uint8_t * rawmsg, int rawlen,
}
cw_dbg(DBG_MSG_ERR, "Retransmitting response message to %s, seqnum=%d",
sock_addr2str(&conn->addr), s2);
sock_addr2str(&conn->addr, sock_buf), s2);
// XXX untested
conn_send_msg(conn, conn->resp_buffer);
@ -558,13 +560,13 @@ int process_message(struct conn *conn, uint8_t * rawmsg, int rawlen,
int conn_process_packet2(struct conn *conn, uint8_t * packet, int len,
struct sockaddr *from)
{
char sock_buf[SOCK_ADDR_BUFSIZE];
if (len < 8) {
/* packet too short */
cw_dbg(DBG_PKT_ERR,
"Discarding packet from %s, packet too short, len=%d, at least 8 expected.",
sock_addr2str(&conn->addr), len);
sock_addr2str(&conn->addr, sock_buf), len);
errno = EAGAIN;
return -1;
}
@ -575,7 +577,7 @@ int conn_process_packet2(struct conn *conn, uint8_t * packet, int len,
/* wrong version */
cw_dbg(DBG_PKT_ERR,
"Discarding packet from %s, wrong version, version=%d, version %d expected.",
sock_addr2str(&conn->addr), (preamble & 0xf0) >> 4,
sock_addr2str(&conn->addr,sock_buf), (preamble & 0xf0) >> 4,
CAPWAP_VERSION);
errno = EAGAIN;
return -1;
@ -585,7 +587,7 @@ int conn_process_packet2(struct conn *conn, uint8_t * packet, int len,
/* Encrypted data, this shuold never happen here */
cw_dbg(DBG_PKT_ERR,
"Discarding packet from %s, encrypted data after decryption ...",
sock_addr2str(&conn->addr));
sock_addr2str(&conn->addr,sock_buf));
errno = EAGAIN;
return -1;
}
@ -599,7 +601,7 @@ int conn_process_packet2(struct conn *conn, uint8_t * packet, int len,
/* Eleminate messages with wrong header size */
cw_dbg(DBG_PKT_ERR,
"Discarding packet from %s, header length (%d) greater than packet len (%d).",
sock_addr2str(&conn->addr), offs, len);
sock_addr2str(&conn->addr,sock_buf), offs, len);
errno = EAGAIN;
return -1;
}
@ -611,7 +613,7 @@ int conn_process_packet2(struct conn *conn, uint8_t * packet, int len,
/* wrong rmac size */
cw_dbg(DBG_PKT_ERR,
"Discarding packet from %s, wrong R-MAC size, size=%d",
sock_addr2str(&conn->addr), *(packet + 8));
sock_addr2str(&conn->addr,sock_buf), *(packet + 8));
errno = EAGAIN;
return -1;
}

View File

@ -27,6 +27,7 @@
void conn_q_add_packet(struct conn * conn,uint8_t *packet,int len)
{
char sock_buf[SOCK_ADDR_BUFSIZE];
int qwpos = conn->qwpos;
if (qwpos==conn->qsize)
qwpos=0;
@ -34,7 +35,7 @@ void conn_q_add_packet(struct conn * conn,uint8_t *packet,int len)
if (conn->qrpos==qwpos){
/* no buffers, discard packet */
cw_dbg(DBG_PKT_ERR, "Discarding packet from %s, no queue buffers left",
sock_addr2str(&conn->addr));
sock_addr2str(&conn->addr,sock_buf));
return;
}

View File

@ -31,9 +31,10 @@
int conn_send_data_packet(struct conn * conn, const uint8_t * buffer, int len)
{
char sock_buf[SOCK_ADDR_BUFSIZE];
int n;
cw_dbg(DBG_X,"Sending data packet to %s\n",sock_addr2str_p(&conn->data_addr));
cw_dbg(DBG_X,"Sending data packet to %s\n",sock_addr2str_p(&conn->data_addr,sock_buf));
while((n=sendto( conn->data_sock, buffer, len, 0,
(struct sockaddr*)&conn->data_addr,

View File

@ -16,7 +16,8 @@ void cw_get_wtp_name(struct conn *conn,struct sockaddr *addr)
int cw_set_capwap_mode(struct conn *conn,int mode)
{
cw_dbg(DBG_INFO,"Setting CAPWAP mode to %d for %s",mode,sock_addr2str(&conn->addr));
char sock_buf[SOCK_ADDR_BUFSIZE];
cw_dbg(DBG_INFO,"Setting CAPWAP mode to %d for %s",mode,sock_addr2str(&conn->addr,sock_buf));
conn->capwap_mode_out=mode;
return 1;
}

View File

@ -10,6 +10,7 @@
int cw_in_check_disc_req(struct conn *conn, struct cw_action_in *a, uint8_t * data,
int len,struct sockaddr *from)
{
char sock_buf[SOCK_ADDR_BUFSIZE];
cw_action_in_t *mlist[120];
int n = cw_check_missing_mand(mlist, conn, a);
@ -23,7 +24,7 @@ int cw_in_check_disc_req(struct conn *conn, struct cw_action_in *a, uint8_t * da
mode send no discovery response */
cw_dbg(DBG_MSG_ERR,
"Ignoring Discovery Request from %s - missing mandatory elements.",
sock_addr2str(from));
sock_addr2str(from,sock_buf));
return -1;
}

View File

@ -217,21 +217,24 @@ void cw_dbg_missing_mand(int level, struct conn *conn, cw_action_in_t ** ml, int
int cw_format_pkt_hdr(char *dst, int level, struct conn *conn, uint8_t * packet, int len,
struct sockaddr *from)
{
char sock_buf[SOCK_ADDR_BUFSIZE];
char *s = dst;
switch (level) {
case DBG_PKT_IN:
if (cw_get_hdr_flag_f(packet)) {
s += sprintf(s, "Fragment from %s",
sock_addr2str_p(from));
sock_addr2str_p(from,sock_buf));
} else {
s += sprintf(s, "From %s", sock_addr2str_p(from));
s += sprintf(s, "From %s", sock_addr2str_p(from,sock_buf));
}
break;
case DBG_PKT_OUT:
if (cw_get_hdr_flag_f(packet)) {
s += sprintf(s, "Fragment to %s", sock_addr2str(from));
s += sprintf(s, "Fragment to %s", sock_addr2str(from,sock_buf));
} else {
s += sprintf(s, "To %s", sock_addr2str(from));
s += sprintf(s, "To %s", sock_addr2str(from,sock_buf));
}
break;
}
@ -477,7 +480,7 @@ void cw_dbg_msg(int level, struct conn *conn, uint8_t * packet, int len,
{
if (!cw_dbg_is_level(level))
return;
char sock_buf[SOCK_ADDR_BUFSIZE];
char buf[1024];
char *s = buf;
@ -501,9 +504,9 @@ void cw_dbg_msg(int level, struct conn *conn, uint8_t * packet, int len,
s += sprintf(s, "%s Message (type=%d) ", msname /*cw_strmsg(msg_id)*/, msg_id);
if (level == DBG_MSG_IN)
s += sprintf(s, "from %s ", sock_addr2str(from));
s += sprintf(s, "from %s ", sock_addr2str(from,sock_buf));
else
s += sprintf(s, "to %s ", sock_addr2str(from));
s += sprintf(s, "to %s ", sock_addr2str(from,sock_buf));
s += sprintf(s, ", Seqnum: %d ElemLen: %d", cw_get_msg_seqnum(msgptr),
cw_get_msg_elems_len(msgptr));

View File

@ -27,6 +27,7 @@
#include "conn.h"
#ifndef CW_LOG_DUMP_ROW_LEN
#define CW_LOG_DUMP_ROW_LEN 32
#endif
@ -35,6 +36,7 @@
#define CW_LOG_DUMP_ROW_TAB_LEN 8
#endif
/**
*@defgroup DBG DBG
*@{

View File

@ -37,13 +37,14 @@
int dtls_gnutls_accept(struct conn *conn)
{
char sock_buf[SOCK_ADDR_BUFSIZE];
struct dtls_gnutls_data *d;
gnutls_datum_t cookie_key;
gnutls_key_generate(&cookie_key, GNUTLS_COOKIE_KEY_SIZE);
cw_dbg(DBG_DTLS, "Session cookie for %s generated: %s",
sock_addr2str(&conn->addr), sock_hwaddr2idstr((uint8_t *) (&cookie_key),
sock_addr2str(&conn->addr,sock_buf), sock_hwaddr2idstr((uint8_t *) (&cookie_key),
sizeof(cookie_key)));
gnutls_dtls_prestate_st prestate;
@ -94,7 +95,7 @@ int dtls_gnutls_accept(struct conn *conn)
}
cw_dbg(DBG_DTLS, "Cookie verified! Starting handshake with %s ...",sock_addr2str(&conn->addr));
cw_dbg(DBG_DTLS, "Cookie verified! Starting handshake with %s ...",sock_addr2str(&conn->addr,sock_buf));
@ -113,12 +114,12 @@ int dtls_gnutls_accept(struct conn *conn)
if ( rc < 0 ) {
cw_log(LOG_ERR, "Error in handshake with %s: %s",sock_addr2str(&conn->addr), gnutls_strerror(rc));
cw_log(LOG_ERR, "Error in handshake with %s: %s",sock_addr2str(&conn->addr,sock_buf), gnutls_strerror(rc));
return 0;
}
cw_dbg(DBG_DTLS,"Handshake with %s successful.",sock_addr2str(&conn->addr));
cw_dbg(DBG_DTLS,"Handshake with %s successful.",sock_addr2str(&conn->addr,sock_buf));
conn->dtls_data=d;
conn->read = dtls_gnutls_read;

View File

@ -38,6 +38,7 @@
*/
int dtls_gnutls_connect(struct conn *conn)
{
char sock_buf[SOCK_ADDR_BUFSIZE];
struct dtls_gnutls_data *d;
d = dtls_gnutls_data_create(conn,
GNUTLS_CLIENT | GNUTLS_DATAGRAM | GNUTLS_NONBLOCK);
@ -63,12 +64,12 @@ int dtls_gnutls_connect(struct conn *conn)
if (rc < 0) {
cw_log(LOG_ERR, "DTLS (gnutls) Can't connect to %s: %s",
sock_addr2str(&conn->addr), gnutls_strerror(rc));
sock_addr2str(&conn->addr,sock_buf), gnutls_strerror(rc));
return 0;
}
cw_dbg(DBG_DTLS, "Handshake with %s successful", sock_addr2str(&conn->addr));
cw_dbg(DBG_DTLS, "Handshake with %s successful", sock_addr2str(&conn->addr,sock_buf));
conn->dtls_data = d;
conn->read = dtls_gnutls_read;

View File

@ -531,6 +531,7 @@ int dtls_openssl_shutdown(struct conn *conn)
int dtls_openssl_generate_cookie(SSL *ssl, unsigned char *cookie, unsigned int *cookie_len)
{
char sock_buf[SOCK_ADDR_BUFSIZE];
BIO * b = SSL_get_rbio(ssl);
struct conn * conn = b->ptr;
@ -539,7 +540,7 @@ int dtls_openssl_generate_cookie(SSL *ssl, unsigned char *cookie, unsigned int *
/* we "missuse" sockaddr2str to convert our cookie to a hex str */
cw_dbg(DBG_DTLS,"DTLS session cookie for %s generated: %s",
sock_addr2str(&conn->addr), sock_hwaddr2idstr(conn->dtls_cookie,sizeof(conn->dtls_cookie)));
sock_addr2str(&conn->addr,sock_buf), sock_hwaddr2idstr(conn->dtls_cookie,sizeof(conn->dtls_cookie)));
memcpy(cookie,conn->dtls_cookie,sizeof(conn->dtls_cookie));
*cookie_len=sizeof(conn->dtls_cookie);
@ -552,11 +553,12 @@ int dtls_openssl_generate_cookie(SSL *ssl, unsigned char *cookie, unsigned int *
int dtls_openssl_verify_cookie(SSL *ssl, unsigned char *cookie, unsigned int len)
{
char sock_buf[SOCK_ADDR_BUFSIZE];
BIO * b = SSL_get_rbio(ssl);
struct conn * conn = b->ptr;
cw_dbg(DBG_DTLS,"Verifying DTLS cookie from %s: %s",
sock_addr2str(&conn->addr),sock_hwaddr2idstr(conn->dtls_cookie,len));
sock_addr2str(&conn->addr,sock_buf),sock_hwaddr2idstr(conn->dtls_cookie,len));
if (len != sizeof(conn->dtls_cookie)){
return 0;

View File

@ -26,6 +26,8 @@
int dtls_openssl_accept(struct conn *conn)
{
char sock_buf[SOCK_ADDR_BUFSIZE];
if (!conn->dtls_data)
conn->dtls_data =
dtls_openssl_data_create(conn, DTLSv1_server_method(),
@ -49,6 +51,6 @@ int dtls_openssl_accept(struct conn *conn)
return 0;
}
cw_log(LOG_ERR, "DTLS Error: Timeout while establishing session with %s.",
sock_addr2str(&conn->addr));
sock_addr2str(&conn->addr, sock_buf));
return 0;
}

View File

@ -124,6 +124,7 @@ int netconn_q_recv_packet_peek(struct netconn *nc, uint8_t * buffer, int len)
void netconn_q_add_packet(struct netconn * nc,uint8_t *packet,int len)
{
char sock_buf[SOCK_ADDR_BUFSIZE];
int qwpos = nc->qwpos;
if (qwpos==nc->qsize)
qwpos=0;
@ -131,7 +132,7 @@ void netconn_q_add_packet(struct netconn * nc,uint8_t *packet,int len)
if (nc->qrpos==qwpos){
/* no buffers, discard packet */
cw_dbg(DBG_PKT_ERR, "Discarding packet from %s, no queue buffers left",
sock_addr2str(&nc->addr));
sock_addr2str(&nc->addr,sock_buf));
return;
}
@ -236,13 +237,14 @@ int netconn_send_capwap_msg(struct netconn * nc, uint8_t *rawmsg, int msglen)
int netconn_process_packet(struct netconn *nc, uint8_t * packet, int len,
struct sockaddr *from)
{
char sock_buf[SOCK_ADDR_BUFSIZE];
cw_dbg_pkt_nc(DBG_PKT_IN, nc, packet, len, from);
if (len < 8) {
/* packet too short */
cw_dbg(DBG_PKT_ERR,
"Discarding packet from %s, packet too short, len=%d, at least 8 expected.",
sock_addr2str(&nc->addr), len);
sock_addr2str(&nc->addr,sock_buf), len);
errno = EAGAIN;
return -1;
}
@ -253,7 +255,7 @@ int netconn_process_packet(struct netconn *nc, uint8_t * packet, int len,
/* wrong version */
cw_dbg(DBG_PKT_ERR,
"Discarding packet from %s, wrong version, version=%d, version %d expected.",
sock_addr2str(&nc->addr), (preamble & 0xf0) >> 4,
sock_addr2str(&nc->addr,sock_buf), (preamble & 0xf0) >> 4,
CAPWAP_VERSION);
errno = EAGAIN;
return -1;
@ -263,7 +265,7 @@ int netconn_process_packet(struct netconn *nc, uint8_t * packet, int len,
/* Encrypted data, this shuold never happen here */
cw_dbg(DBG_PKT_ERR,
"Discarding packet from %s, encrypted data after decryption ...",
sock_addr2str(&nc->addr));
sock_addr2str(&nc->addr,sock_buf));
errno = EAGAIN;
return -1;
}
@ -277,7 +279,7 @@ int netconn_process_packet(struct netconn *nc, uint8_t * packet, int len,
/* Eleminate messages with wrong header size */
cw_dbg(DBG_PKT_ERR,
"Discarding packet from %s, header length (%d) greater than packet len (%d).",
sock_addr2str(&nc->addr), offs, len);
sock_addr2str(&nc->addr,sock_buf), offs, len);
errno = EAGAIN;
return -1;
}
@ -289,7 +291,7 @@ int netconn_process_packet(struct netconn *nc, uint8_t * packet, int len,
/* wrong rmac size */
cw_dbg(DBG_PKT_ERR,
"Discarding packet from %s, wrong R-MAC size, size=%d",
sock_addr2str(&nc->addr), *(packet + 8));
sock_addr2str(&nc->addr,sock_buf), *(packet + 8));
errno = EAGAIN;
return -1;
}

View File

@ -124,6 +124,7 @@ int conn_send_data_msg(struct conn * conn, uint8_t *rawmsg,int len)
int cw_send_request(struct conn *conn,int msg_id)
{
char sock_buf[SOCK_ADDR_BUFSIZE];
cw_init_request(conn, msg_id);
if ( cw_put_msg(conn, conn->req_buffer) == -1 ){
errno=ENOMSG;
@ -157,7 +158,7 @@ int cw_send_request(struct conn *conn,int msg_id)
}
if ( rc <0 && errno != EAGAIN) {
cw_log(LOG_ERR,"Can't read from %s: %s",sock_addr2str(&conn->addr),strerror(errno));
cw_log(LOG_ERR,"Can't read from %s: %s",sock_addr2str(&conn->addr,sock_buf),strerror(errno));
}
if ( rc <0 && errno == EAGAIN) {
errno=ETIMEDOUT;

View File

@ -84,6 +84,9 @@ extern int sock_getifinfo(const struct sockaddr *addr, char *ifname,
char *sock_addrtostr(const struct sockaddr *sa, char *s, size_t maxlen, int addport);
#define SOCK_ADDR_BUFSIZE 64
#define SOCK_ADDR_BUF_DEFINE char __sock_buf__[SOCK_ADDR_BUFSIZE]
/**
* Convert a sockaddr structure to a human readable string
@ -100,13 +103,13 @@ char *sock_addrtostr(const struct sockaddr *sa, char *s, size_t maxlen, int addp
sprintf("Adress: %s",sock_addr2str(&sa));
\endcode
*/
#define sock_addr2str(s) ( sock_addrtostr( (struct sockaddr*)s, (char[64]){0}, 64, 0 ) )
#define sock_addr2str(s,buf) ( sock_addrtostr( (struct sockaddr*)s, buf , SOCK_ADDR_BUFSIZE, 0 ) )
/**
* Same as #sock_addr2str, but also the port number is appended to the result
* @see #sock_addr2str
*/
#define sock_addr2str_p(s) ( sock_addrtostr( (struct sockaddr*)s, (char[64]){0}, 64,1 ) )
#define sock_addr2str_p(s,buf) ( sock_addrtostr( (struct sockaddr*)s, buf, SOCK_ADDR_BUFSIZE, 1 ) )