Commit 11ee8a2d authored by Aurelio Colosimo's avatar Aurelio Colosimo

improved readability and minor fix

state-listening: go to FAULTY if received an announce of uncorrect
length
all states: use switch/case to analyse the incoming msg type
parent 4bf77d71
...@@ -147,8 +147,8 @@ struct pp_instance { ...@@ -147,8 +147,8 @@ struct pp_instance {
*/ */
MsgHeader msg_tmp_header; MsgHeader msg_tmp_header;
MsgHeader pdelay_req_hdr; MsgHeader pdelay_req_hdr;
int is_from_self; Boolean is_from_self;
Boolean is_from_cur_par;
}; };
#define DSDEF(x) x->defaultDS #define DSDEF(x) x->defaultDS
......
...@@ -42,6 +42,14 @@ void msg_unpack_header(void *buf, struct pp_instance *ppi) ...@@ -42,6 +42,14 @@ void msg_unpack_header(void *buf, struct pp_instance *ppi)
else else
ppi->is_from_self = 0; ppi->is_from_self = 0;
if (!pp_memcmp(DSPAR(ppi)->parentPortIdentity.clockIdentity,
hdr->sourcePortIdentity.clockIdentity,
PP_CLOCK_IDENTITY_LENGTH) &&
(DSPAR(ppi)->parentPortIdentity.portNumber ==
hdr->sourcePortIdentity.portNumber))
ppi->is_from_cur_par = 1;
else
ppi->is_from_cur_par = 0;
/* FIXME: diag /* FIXME: diag
#ifdef PTPD_DBG #ifdef PTPD_DBG
......
...@@ -7,7 +7,6 @@ ...@@ -7,7 +7,6 @@
int pp_listening(struct pp_instance *ppi, unsigned char *pkt, int plen) int pp_listening(struct pp_instance *ppi, unsigned char *pkt, int plen)
{ {
if (ppi->is_new_state) { if (ppi->is_new_state) {
st_com_restart_annrec_timer(ppi); st_com_restart_annrec_timer(ppi);
} }
...@@ -15,13 +14,20 @@ int pp_listening(struct pp_instance *ppi, unsigned char *pkt, int plen) ...@@ -15,13 +14,20 @@ int pp_listening(struct pp_instance *ppi, unsigned char *pkt, int plen)
if (st_com_check_record_update(ppi)) if (st_com_check_record_update(ppi))
goto state_updated; goto state_updated;
if (ppi->msg_tmp_header.messageType == PPM_ANNOUNCE) { switch (ppi->msg_tmp_header.messageType) {
case PPM_ANNOUNCE:
if (plen < PP_ANNOUNCE_LENGTH) {
ppi->next_state = PPS_FAULTY;
goto state_updated;
}
if (ppi->is_from_self) { if (ppi->is_from_self) {
/* FIXME diag /* FIXME diag
DBGV("HandleAnnounce : Ignore message from self \n"); DBGV("HandleAnnounce : Ignore message from self \n");
*/ */
return; goto state_done;
} }
/* FIXME diag /* FIXME diag
...@@ -31,6 +37,11 @@ int pp_listening(struct pp_instance *ppi, unsigned char *pkt, int plen) ...@@ -31,6 +37,11 @@ int pp_listening(struct pp_instance *ppi, unsigned char *pkt, int plen)
st_com_add_foreign(pkt, &ppi->msg_tmp_header, ppi); st_com_add_foreign(pkt, &ppi->msg_tmp_header, ppi);
ppi->record_update = TRUE; ppi->record_update = TRUE;
break;
default:
/* disreguard, nothing to do */
break;
} }
st_com_execute_slave(ppi); st_com_execute_slave(ppi);
...@@ -41,6 +52,7 @@ state_updated: ...@@ -41,6 +52,7 @@ state_updated:
pp_timer_stop(ppi->timers[PP_TIMER_ANNOUNCE_RECEIPT]); pp_timer_stop(ppi->timers[PP_TIMER_ANNOUNCE_RECEIPT]);
} }
state_done:
ppi->next_delay = PP_DEFAULT_NEXT_DELAY_MS; ppi->next_delay = PP_DEFAULT_NEXT_DELAY_MS;
return 0; return 0;
......
...@@ -16,7 +16,8 @@ int pp_passive(struct pp_instance *ppi, unsigned char *pkt, int plen) ...@@ -16,7 +16,8 @@ int pp_passive(struct pp_instance *ppi, unsigned char *pkt, int plen)
if (st_com_check_record_update(ppi)) if (st_com_check_record_update(ppi))
goto state_updated; goto state_updated;
if (ppi->msg_tmp_header.messageType == PPM_PDELAY_REQ) { switch (ppi->msg_tmp_header.messageType) {
case PPM_PDELAY_REQ:
#ifdef _FROM_PTPD_2_1_0_ #ifdef _FROM_PTPD_2_1_0_
/* TODO "translate" it into ptp-wr structs*/ /* TODO "translate" it into ptp-wr structs*/
if (ppi->is_from_self) { if (ppi->is_from_self) {
...@@ -42,6 +43,12 @@ int pp_passive(struct pp_instance *ppi, unsigned char *pkt, int plen) ...@@ -42,6 +43,12 @@ int pp_passive(struct pp_instance *ppi, unsigned char *pkt, int plen)
break; break;
} }
#endif /* _FROM_PTPD_2_1_0_ */ #endif /* _FROM_PTPD_2_1_0_ */
break;
default:
/* disreguard, nothing to do */
break;
} }
st_com_execute_slave(ppi); st_com_execute_slave(ppi);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment