Restrict SET actions to UDS port.
Setting GRANDMASTER_SETTINGS_NP is allowed only from UDS, but PORT_DATA_SET can be set from any port. Move the port check to clock_manage(), so all clock and port SET actions are restricted to the UDS port. Signed-off-by: Miroslav Lichvar <mlichvar@redhat.com>master
parent
c0fd772974
commit
91e240679b
9
clock.c
9
clock.c
|
@ -320,10 +320,6 @@ static int clock_management_set(struct clock *c, struct port *p,
|
||||||
|
|
||||||
switch (id) {
|
switch (id) {
|
||||||
case GRANDMASTER_SETTINGS_NP:
|
case GRANDMASTER_SETTINGS_NP:
|
||||||
if (p != c->port[c->nports]) {
|
|
||||||
/* Sorry, only allowed on the UDS port. */
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
gsn = (struct grandmaster_settings_np *) tlv->data;
|
gsn = (struct grandmaster_settings_np *) tlv->data;
|
||||||
c->dds.clockQuality = gsn->clockQuality;
|
c->dds.clockQuality = gsn->clockQuality;
|
||||||
c->utc_offset = gsn->utc_offset;
|
c->utc_offset = gsn->utc_offset;
|
||||||
|
@ -843,6 +839,11 @@ int clock_manage(struct clock *c, struct port *p, struct ptp_message *msg)
|
||||||
clock_management_send_error(p, msg, WRONG_LENGTH);
|
clock_management_send_error(p, msg, WRONG_LENGTH);
|
||||||
return changed;
|
return changed;
|
||||||
}
|
}
|
||||||
|
if (p != c->port[c->nports]) {
|
||||||
|
/* Sorry, only allowed on the UDS port. */
|
||||||
|
clock_management_send_error(p, msg, NOT_SUPPORTED);
|
||||||
|
return changed;
|
||||||
|
}
|
||||||
if (clock_management_set(c, p, mgt->id, msg, &changed))
|
if (clock_management_set(c, p, mgt->id, msg, &changed))
|
||||||
return changed;
|
return changed;
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue