Signed-off-by: Richard Cochran <[email protected]>
---
config.c | 33 +++++++++------------------------
config.h | 4 ----
port.c | 2 +-
ptp4l.c | 14 ++++++--------
4 files changed, 16 insertions(+), 37 deletions(-)
diff --git a/config.c b/config.c
index 66d6954..3fce7d2 100644
--- a/config.c
+++ b/config.c
@@ -110,6 +110,13 @@ struct config_item {
#define PORT_ITEM_INT(label, _default, min, max) \
CONFIG_ITEM_INT(label, 1, _default, min, max)
+static struct config_enum delay_mech_enu[] = {
+ { "Auto", DM_AUTO },
+ { "E2E", DM_E2E },
+ { "P2P", DM_P2P },
+ { NULL, 0 },
+};
+
static struct config_enum nw_trans_enu[] = {
{ "L2", TRANS_IEEE_802_3 },
{ "UDPv4", TRANS_UDP_IPV4 },
@@ -126,6 +133,7 @@ struct config_item config_tab[] = {
GLOB_ITEM_INT("clockClass", 248, 0, UINT8_MAX),
PORT_ITEM_INT("delayAsymmetry", 0, INT_MIN, INT_MAX),
PORT_ITEM_INT("delay_filter_length", 10, 1, INT_MAX),
+ PORT_ITEM_ENU("delay_mechanism", DM_E2E, delay_mech_enu),
GLOB_ITEM_INT("domainNumber", 0, 0, 127),
PORT_ITEM_INT("egressLatency", 0, INT_MIN, INT_MAX),
PORT_ITEM_INT("fault_badpeernet_interval", 16, INT32_MIN, INT32_MAX),
@@ -367,17 +375,7 @@ static enum parser_result parse_port_setting(struct config
*cfg,
if (r != NOT_PARSED)
return r;
- if (!strcmp(option, "delay_mechanism")) {
- if (!strcasecmp("Auto", value))
- iface->dm = DM_AUTO;
- else if (!strcasecmp("E2E", value))
- iface->dm = DM_E2E;
- else if (!strcasecmp("P2P", value))
- iface->dm = DM_P2P;
- else
- return BAD_VALUE;
-
- } else if (!strcmp(option, "tsproc_mode")) {
+ if (!strcmp(option, "tsproc_mode")) {
if (!strcasecmp("filter", value))
iface->tsproc_mode = TSPROC_FILTER;
else if (!strcasecmp("raw", value))
@@ -458,18 +456,6 @@ static enum parser_result parse_global_setting(const char
*option,
return BAD_VALUE;
}
- } else if (!strcmp(option, "delay_mechanism")) {
- if (!(cfg_ignore & CFG_IGNORE_DM)) {
- if (0 == strcasecmp("E2E", value))
- cfg->dm = DM_E2E;
- else if (0 == strcasecmp("P2P", value))
- cfg->dm = DM_P2P;
- else if (0 == strcasecmp("Auto", value))
- cfg->dm = DM_AUTO;
- else
- return BAD_VALUE;
- }
-
} else if (!strcmp(option, "clock_servo")) {
if (!strcasecmp("pi", value))
cfg->clock_servo = CLOCK_SERVO_PI;
@@ -705,7 +691,6 @@ struct interface *config_create_interface(char *name,
struct config *cfg)
void config_init_interface(struct interface *iface, struct config *cfg)
{
- iface->dm = cfg->dm;
sk_get_ts_info(iface->name, &iface->ts_info);
iface->delay_filter = cfg->dds.delay_filter;
}
diff --git a/config.h b/config.h
index 3cfc6ac..e1c24e8 100644
--- a/config.h
+++ b/config.h
@@ -35,13 +35,11 @@
struct interface {
STAILQ_ENTRY(interface) list;
char name[MAX_IFNAME_SIZE + 1];
- enum delay_mechanism dm;
struct sk_ts_info ts_info;
enum tsproc_mode tsproc_mode;
enum filter_type delay_filter;
};
-#define CFG_IGNORE_DM (1 << 0)
#define CFG_IGNORE_TIMESTAMPING (1 << 2)
struct config {
@@ -56,8 +54,6 @@ struct config {
/* the rest are legacy fields */
enum timestamp_type timestamping;
- enum delay_mechanism dm;
-
struct default_ds dds;
enum servo_type clock_servo;
diff --git a/port.c b/port.c
index 706183f..8d48cf8 100644
--- a/port.c
+++ b/port.c
@@ -2550,7 +2550,7 @@ struct port *port_open(int phc_index,
p->portIdentity.clockIdentity = clock_identity(clock);
p->portIdentity.portNumber = number;
p->state = PS_INITIALIZING;
- p->delayMechanism = interface->dm;
+ p->delayMechanism = config_get_int(cfg, p->name, "delay_mechanism");
p->versionNumber = PTP_VERSION;
/* Set fault timeouts to a default value */
diff --git a/ptp4l.c b/ptp4l.c
index 52fff25..cd81944 100644
--- a/ptp4l.c
+++ b/ptp4l.c
@@ -62,7 +62,6 @@ static struct config cfg_settings = {
},
.timestamping = TS_HARDWARE,
- .dm = DM_E2E,
.clock_servo = CLOCK_SERVO_PI,
.ptp_dst_mac = ptp_dst_mac,
@@ -110,7 +109,6 @@ int main(int argc, char *argv[])
int c;
struct interface *iface;
int *cfg_ignore = &cfg_settings.cfg_ignore;
- enum delay_mechanism *dm = &cfg_settings.dm;
enum timestamp_type *timestamping = &cfg_settings.timestamping;
struct clock *clock;
struct config *cfg = &cfg_settings;
@@ -130,16 +128,16 @@ int main(int argc, char *argv[])
while (EOF != (c = getopt(argc, argv, "AEP246HSLf:i:p:sl:mqvh"))) {
switch (c) {
case 'A':
- *dm = DM_AUTO;
- *cfg_ignore |= CFG_IGNORE_DM;
+ if (config_set_int(cfg, "delay_mechanism", DM_AUTO))
+ return -1;
break;
case 'E':
- *dm = DM_E2E;
- *cfg_ignore |= CFG_IGNORE_DM;
+ if (config_set_int(cfg, "delay_mechanism", DM_E2E))
+ return -1;
break;
case 'P':
- *dm = DM_P2P;
- *cfg_ignore |= CFG_IGNORE_DM;
+ if (config_set_int(cfg, "delay_mechanism", DM_P2P))
+ return -1;
break;
case '2':
if (config_set_int(cfg, "network_transport",
--
2.1.4
------------------------------------------------------------------------------
_______________________________________________
Linuxptp-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linuxptp-devel