cmdmon: replace definitions of empty requests with null request

This commit is contained in:
Miroslav Lichvar 2015-05-28 17:00:47 +02:00
parent 438b881ab4
commit 31669f343a
2 changed files with 28 additions and 79 deletions

60
candm.h
View file

@ -116,6 +116,10 @@ typedef struct {
pktlength.c, to get the number of bytes that ought to be pktlength.c, to get the number of bytes that ought to be
transmitted for each packet type. */ transmitted for each packet type. */
typedef struct {
int32_t EOR;
} REQ_Null;
typedef struct { typedef struct {
IPAddr mask; IPAddr mask;
IPAddr address; IPAddr address;
@ -215,19 +219,11 @@ typedef struct {
int32_t EOR; int32_t EOR;
} REQ_Manual; } REQ_Manual;
typedef struct {
int32_t EOR;
} REQ_N_Sources;
typedef struct { typedef struct {
int32_t index; int32_t index;
int32_t EOR; int32_t EOR;
} REQ_Source_Data; } REQ_Source_Data;
typedef struct {
int32_t EOR;
} REQ_Rekey;
typedef struct { typedef struct {
IPAddr ip; IPAddr ip;
int32_t subnet_bits; int32_t subnet_bits;
@ -264,10 +260,6 @@ typedef struct {
int32_t EOR; int32_t EOR;
} REQ_Del_Source; } REQ_Del_Source;
typedef struct {
int32_t EOR;
} REQ_WriteRtc;
typedef struct { typedef struct {
Float dfreq; Float dfreq;
int32_t EOR; int32_t EOR;
@ -279,27 +271,11 @@ typedef struct {
int32_t EOR; int32_t EOR;
} REQ_Doffset; } REQ_Doffset;
typedef struct {
int32_t EOR;
} REQ_Tracking;
typedef struct { typedef struct {
uint32_t index; uint32_t index;
int32_t EOR; int32_t EOR;
} REQ_Sourcestats; } REQ_Sourcestats;
typedef struct {
int32_t EOR;
} REQ_RTCReport;
typedef struct {
int32_t EOR;
} REQ_TrimRTC;
typedef struct {
int32_t EOR;
} REQ_CycleLogs;
/* This is based on the response size rather than the /* This is based on the response size rather than the
request size */ request size */
#define MAX_CLIENT_ACCESSES 8 #define MAX_CLIENT_ACCESSES 8
@ -310,27 +286,11 @@ typedef struct {
int32_t EOR; int32_t EOR;
} REQ_ClientAccessesByIndex; } REQ_ClientAccessesByIndex;
typedef struct {
int32_t EOR;
} REQ_ManualList;
typedef struct { typedef struct {
int32_t index; int32_t index;
int32_t EOR; int32_t EOR;
} REQ_ManualDelete; } REQ_ManualDelete;
typedef struct {
int32_t EOR;
} REQ_MakeStep;
typedef struct {
int32_t EOR;
} REQ_Activity;
typedef struct {
int32_t EOR;
} REQ_Reselect;
typedef struct { typedef struct {
Float distance; Float distance;
int32_t EOR; int32_t EOR;
@ -398,6 +358,7 @@ typedef struct {
uint32_t token; /* Command token (to prevent replay attack) */ uint32_t token; /* Command token (to prevent replay attack) */
union { union {
REQ_Null null;
REQ_Online online; REQ_Online online;
REQ_Offline offline; REQ_Offline offline;
REQ_Burst burst; REQ_Burst burst;
@ -415,27 +376,16 @@ typedef struct {
REQ_Settime settime; REQ_Settime settime;
REQ_Local local; REQ_Local local;
REQ_Manual manual; REQ_Manual manual;
REQ_N_Sources n_sources;
REQ_Source_Data source_data; REQ_Source_Data source_data;
REQ_Rekey rekey;
REQ_Allow_Deny allow_deny; REQ_Allow_Deny allow_deny;
REQ_Ac_Check ac_check; REQ_Ac_Check ac_check;
REQ_NTP_Source ntp_source; REQ_NTP_Source ntp_source;
REQ_Del_Source del_source; REQ_Del_Source del_source;
REQ_WriteRtc writertc;
REQ_Dfreq dfreq; REQ_Dfreq dfreq;
REQ_Doffset doffset; REQ_Doffset doffset;
REQ_Tracking tracking;
REQ_Sourcestats sourcestats; REQ_Sourcestats sourcestats;
REQ_RTCReport rtcreport;
REQ_TrimRTC trimrtc;
REQ_CycleLogs cyclelogs;
REQ_ClientAccessesByIndex client_accesses_by_index; REQ_ClientAccessesByIndex client_accesses_by_index;
REQ_ManualList manual_list;
REQ_ManualDelete manual_delete; REQ_ManualDelete manual_delete;
REQ_MakeStep make_step;
REQ_Activity activity;
REQ_Reselect reselect;
REQ_ReselectDistance reselect_distance; REQ_ReselectDistance reselect_distance;
} data; /* Command specific parameters */ } data; /* Command specific parameters */

View file

@ -44,9 +44,8 @@ command_unpadded_length(CMD_Request *r)
return 0; return 0;
} else { } else {
switch (type) { switch (type) {
case REQ_NULL: case REQ_NULL:
return offsetof(CMD_Request, data); return offsetof(CMD_Request, data.null.EOR);
case REQ_ONLINE: case REQ_ONLINE:
return offsetof(CMD_Request, data.online.EOR); return offsetof(CMD_Request, data.online.EOR);
case REQ_OFFLINE: case REQ_OFFLINE:
@ -78,11 +77,11 @@ command_unpadded_length(CMD_Request *r)
case REQ_MANUAL : case REQ_MANUAL :
return offsetof(CMD_Request, data.manual.EOR); return offsetof(CMD_Request, data.manual.EOR);
case REQ_N_SOURCES : case REQ_N_SOURCES :
return offsetof(CMD_Request, data.n_sources.EOR); return offsetof(CMD_Request, data.null.EOR);
case REQ_SOURCE_DATA : case REQ_SOURCE_DATA :
return offsetof(CMD_Request, data.source_data.EOR); return offsetof(CMD_Request, data.source_data.EOR);
case REQ_REKEY : case REQ_REKEY :
return offsetof(CMD_Request, data.rekey.EOR); return offsetof(CMD_Request, data.null.EOR);
case REQ_ALLOW : case REQ_ALLOW :
return offsetof(CMD_Request, data.allow_deny.EOR); return offsetof(CMD_Request, data.allow_deny.EOR);
case REQ_ALLOWALL : case REQ_ALLOWALL :
@ -110,21 +109,21 @@ command_unpadded_length(CMD_Request *r)
case REQ_DEL_SOURCE : case REQ_DEL_SOURCE :
return offsetof(CMD_Request, data.del_source.EOR); return offsetof(CMD_Request, data.del_source.EOR);
case REQ_WRITERTC : case REQ_WRITERTC :
return offsetof(CMD_Request, data.writertc.EOR); return offsetof(CMD_Request, data.null.EOR);
case REQ_DFREQ : case REQ_DFREQ :
return offsetof(CMD_Request, data.dfreq.EOR); return offsetof(CMD_Request, data.dfreq.EOR);
case REQ_DOFFSET : case REQ_DOFFSET :
return offsetof(CMD_Request, data.doffset.EOR); return offsetof(CMD_Request, data.doffset.EOR);
case REQ_TRACKING : case REQ_TRACKING :
return offsetof(CMD_Request, data.tracking.EOR); return offsetof(CMD_Request, data.null.EOR);
case REQ_SOURCESTATS : case REQ_SOURCESTATS :
return offsetof(CMD_Request, data.sourcestats.EOR); return offsetof(CMD_Request, data.sourcestats.EOR);
case REQ_RTCREPORT : case REQ_RTCREPORT :
return offsetof(CMD_Request, data.rtcreport.EOR); return offsetof(CMD_Request, data.null.EOR);
case REQ_TRIMRTC : case REQ_TRIMRTC :
return offsetof(CMD_Request, data.trimrtc.EOR); return offsetof(CMD_Request, data.null.EOR);
case REQ_CYCLELOGS : case REQ_CYCLELOGS :
return offsetof(CMD_Request, data.cyclelogs.EOR); return offsetof(CMD_Request, data.null.EOR);
case REQ_SUBNETS_ACCESSED : case REQ_SUBNETS_ACCESSED :
case REQ_CLIENT_ACCESSES: case REQ_CLIENT_ACCESSES:
/* No longer supported */ /* No longer supported */
@ -132,15 +131,15 @@ command_unpadded_length(CMD_Request *r)
case REQ_CLIENT_ACCESSES_BY_INDEX: case REQ_CLIENT_ACCESSES_BY_INDEX:
return offsetof(CMD_Request, data.client_accesses_by_index.EOR); return offsetof(CMD_Request, data.client_accesses_by_index.EOR);
case REQ_MANUAL_LIST: case REQ_MANUAL_LIST:
return offsetof(CMD_Request, data.manual_list.EOR); return offsetof(CMD_Request, data.null.EOR);
case REQ_MANUAL_DELETE: case REQ_MANUAL_DELETE:
return offsetof(CMD_Request, data.manual_delete.EOR); return offsetof(CMD_Request, data.manual_delete.EOR);
case REQ_MAKESTEP: case REQ_MAKESTEP:
return offsetof(CMD_Request, data.make_step.EOR); return offsetof(CMD_Request, data.null.EOR);
case REQ_ACTIVITY: case REQ_ACTIVITY:
return offsetof(CMD_Request, data.activity.EOR); return offsetof(CMD_Request, data.null.EOR);
case REQ_RESELECT: case REQ_RESELECT:
return offsetof(CMD_Request, data.reselect.EOR); return offsetof(CMD_Request, data.null.EOR);
case REQ_RESELECTDISTANCE: case REQ_RESELECTDISTANCE:
return offsetof(CMD_Request, data.reselect_distance.EOR); return offsetof(CMD_Request, data.reselect_distance.EOR);
case REQ_MODIFY_MINSTRATUM: case REQ_MODIFY_MINSTRATUM:
@ -228,11 +227,11 @@ PKL_CommandPaddingLength(CMD_Request *r)
case REQ_MANUAL: case REQ_MANUAL:
return PADDING_LENGTH(data.manual.EOR, data.null.EOR); return PADDING_LENGTH(data.manual.EOR, data.null.EOR);
case REQ_N_SOURCES: case REQ_N_SOURCES:
return PADDING_LENGTH(data.n_sources.EOR, data.n_sources.EOR); return PADDING_LENGTH(data.null.EOR, data.n_sources.EOR);
case REQ_SOURCE_DATA: case REQ_SOURCE_DATA:
return PADDING_LENGTH(data.source_data.EOR, data.source_data.EOR); return PADDING_LENGTH(data.source_data.EOR, data.source_data.EOR);
case REQ_REKEY: case REQ_REKEY:
return PADDING_LENGTH(data.rekey.EOR, data.null.EOR); return PADDING_LENGTH(data.null.EOR, data.null.EOR);
case REQ_ALLOW: case REQ_ALLOW:
return PADDING_LENGTH(data.allow_deny.EOR, data.null.EOR); return PADDING_LENGTH(data.allow_deny.EOR, data.null.EOR);
case REQ_ALLOWALL: case REQ_ALLOWALL:
@ -260,21 +259,21 @@ PKL_CommandPaddingLength(CMD_Request *r)
case REQ_DEL_SOURCE: case REQ_DEL_SOURCE:
return PADDING_LENGTH(data.del_source.EOR, data.null.EOR); return PADDING_LENGTH(data.del_source.EOR, data.null.EOR);
case REQ_WRITERTC: case REQ_WRITERTC:
return PADDING_LENGTH(data.writertc.EOR, data.null.EOR); return PADDING_LENGTH(data.null.EOR, data.null.EOR);
case REQ_DFREQ: case REQ_DFREQ:
return PADDING_LENGTH(data.dfreq.EOR, data.null.EOR); return PADDING_LENGTH(data.dfreq.EOR, data.null.EOR);
case REQ_DOFFSET: case REQ_DOFFSET:
return PADDING_LENGTH(data.doffset.EOR, data.null.EOR); return PADDING_LENGTH(data.doffset.EOR, data.null.EOR);
case REQ_TRACKING: case REQ_TRACKING:
return PADDING_LENGTH(data.tracking.EOR, data.tracking.EOR); return PADDING_LENGTH(data.null.EOR, data.tracking.EOR);
case REQ_SOURCESTATS: case REQ_SOURCESTATS:
return PADDING_LENGTH(data.sourcestats.EOR, data.sourcestats.EOR); return PADDING_LENGTH(data.sourcestats.EOR, data.sourcestats.EOR);
case REQ_RTCREPORT: case REQ_RTCREPORT:
return PADDING_LENGTH(data.rtcreport.EOR, data.rtc.EOR); return PADDING_LENGTH(data.null.EOR, data.rtc.EOR);
case REQ_TRIMRTC: case REQ_TRIMRTC:
return PADDING_LENGTH(data.trimrtc.EOR, data.null.EOR); return PADDING_LENGTH(data.null.EOR, data.null.EOR);
case REQ_CYCLELOGS: case REQ_CYCLELOGS:
return PADDING_LENGTH(data.cyclelogs.EOR, data.null.EOR); return PADDING_LENGTH(data.null.EOR, data.null.EOR);
case REQ_SUBNETS_ACCESSED: case REQ_SUBNETS_ACCESSED:
case REQ_CLIENT_ACCESSES: case REQ_CLIENT_ACCESSES:
/* No longer supported */ /* No longer supported */
@ -282,15 +281,15 @@ PKL_CommandPaddingLength(CMD_Request *r)
case REQ_CLIENT_ACCESSES_BY_INDEX: case REQ_CLIENT_ACCESSES_BY_INDEX:
return PADDING_LENGTH(data.client_accesses_by_index.EOR, data.client_accesses_by_index.EOR); return PADDING_LENGTH(data.client_accesses_by_index.EOR, data.client_accesses_by_index.EOR);
case REQ_MANUAL_LIST: case REQ_MANUAL_LIST:
return PADDING_LENGTH(data.manual_list.EOR, data.manual_list.EOR); return PADDING_LENGTH(data.null.EOR, data.manual_list.EOR);
case REQ_MANUAL_DELETE: case REQ_MANUAL_DELETE:
return PADDING_LENGTH(data.manual_delete.EOR, data.null.EOR); return PADDING_LENGTH(data.manual_delete.EOR, data.null.EOR);
case REQ_MAKESTEP: case REQ_MAKESTEP:
return PADDING_LENGTH(data.make_step.EOR, data.null.EOR); return PADDING_LENGTH(data.null.EOR, data.null.EOR);
case REQ_ACTIVITY: case REQ_ACTIVITY:
return PADDING_LENGTH(data.activity.EOR, data.activity.EOR); return PADDING_LENGTH(data.null.EOR, data.activity.EOR);
case REQ_RESELECT: case REQ_RESELECT:
return PADDING_LENGTH(data.reselect.EOR, data.null.EOR); return PADDING_LENGTH(data.null.EOR, data.null.EOR);
case REQ_RESELECTDISTANCE: case REQ_RESELECTDISTANCE:
return PADDING_LENGTH(data.reselect_distance.EOR, data.null.EOR); return PADDING_LENGTH(data.reselect_distance.EOR, data.null.EOR);
case REQ_MODIFY_MINSTRATUM: case REQ_MODIFY_MINSTRATUM: