Skip to content

Commit

Permalink
Add a configuration file option for the 802.1AS gmCapable flag.
Browse files Browse the repository at this point in the history
Signed-off-by: Richard Cochran <[email protected]>
  • Loading branch information
richardcochran committed Dec 18, 2013
1 parent d72e795 commit 101e9dc
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 2 deletions.
6 changes: 6 additions & 0 deletions config.c
Original file line number Diff line number Diff line change
Expand Up @@ -255,6 +255,12 @@ static enum parser_result parse_global_setting(const char *option,
dds->flags &= ~DDS_SLAVE_ONLY;
}

} else if (!strcmp(option, "gmCapable")) {
r = get_ranged_int(value, &val, 0, 1);
if (r != PARSED_OK)
return r;
cfg->dds.grand_master_capable = val;

} else if (!strcmp(option, "priority1")) {
r = get_ranged_uint(value, &uval, 0, UINT8_MAX);
if (r != PARSED_OK)
Expand Down
2 changes: 1 addition & 1 deletion gPTP.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# Default Data Set
#
twoStepFlag 1
slaveOnly 0
gmCapable 1
priority1 248
priority2 248
domainNumber 0
Expand Down
7 changes: 7 additions & 0 deletions ptp4l.8
Original file line number Diff line number Diff line change
Expand Up @@ -212,8 +212,15 @@ The default is 1 (enabled).
.TP
.B slaveOnly
The local clock is a slave-only clock if enabled.
This option is only for use with 1588 clocks and should not be enabled
for 802.1AS clocks.
The default is 0 (disabled).
.TP
.B gmCapable
If this option is enabled, then the local clock is able to become grand master.
This is only for use with 802.1AS clocks and has no effect on 1588 clocks.
The default is 1 (enabled).
.TP
.B priority1
The priority1 attribute of the local clock. It is used in the best master
selection algorithm, lower values take precedence. Must be in the range 0 to
Expand Down
9 changes: 8 additions & 1 deletion ptp4l.c
Original file line number Diff line number Diff line change
Expand Up @@ -284,7 +284,14 @@ int main(int argc, char *argv[])
if (config && (c = config_read(config, &cfg_settings))) {
return c;
}
if (ds->flags & DDS_SLAVE_ONLY) {
if (!cfg_settings.dds.grand_master_capable &&
ds->flags & DDS_SLAVE_ONLY) {
fprintf(stderr,
"Cannot mix 1588 slaveOnly with 802.1AS !gmCapable.\n");
return -1;
}
if (!cfg_settings.dds.grand_master_capable ||
ds->flags & DDS_SLAVE_ONLY) {
ds->clockQuality.clockClass = 255;
}

Expand Down

0 comments on commit 101e9dc

Please sign in to comment.