Signed-off-by: Richard Cochran <richardcoch...@gmail.com>
---
 clock.c  |  5 ++++-
 config.c | 33 +++++++++------------------------
 config.h |  3 ---
 port.c   |  6 ++++--
 ptp4l.c  | 17 +++++++++--------
 5 files changed, 26 insertions(+), 38 deletions(-)

diff --git a/clock.c b/clock.c
index ab048f5..d0298f4 100644
--- a/clock.c
+++ b/clock.c
@@ -819,7 +819,10 @@ struct clock *clock_create(struct config *config, int 
phc_index,
                clock_destroy(c);
 
        snprintf(udsif->name, sizeof(udsif->name), "%s", uds_path);
-       udsif->transport = TRANS_UDS;
+       if (config_set_section_int(config, udsif->name,
+                                   "network_transport", TRANS_UDS)) {
+               return NULL;
+       }
        if (config_set_section_int(config, udsif->name, "delay_filter_length", 
1)) {
                return NULL;
        }
diff --git a/config.c b/config.c
index 2e975d5..66d6954 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 nw_trans_enu[] = {
+       { "L2",    TRANS_IEEE_802_3 },
+       { "UDPv4", TRANS_UDP_IPV4   },
+       { "UDPv6", TRANS_UDP_IPV6   },
+       { NULL, 0 },
+};
+
 struct config_item config_tab[] = {
        PORT_ITEM_INT("announceReceiptTimeout", 3, 2, UINT8_MAX),
        GLOB_ITEM_INT("assume_two_step", 0, 0, 1),
@@ -138,6 +145,7 @@ struct config_item config_tab[] = {
        GLOB_ITEM_INT("max_frequency", 900000000, 0, INT_MAX),
        PORT_ITEM_INT("min_neighbor_prop_delay", -20000000, INT_MIN, -1),
        PORT_ITEM_INT("neighborPropDelayThresh", 20000000, 0, INT_MAX),
+       PORT_ITEM_ENU("network_transport", TRANS_UDP_IPV4, nw_trans_enu),
        GLOB_ITEM_INT("ntpshm_segment", 0, INT_MIN, INT_MAX),
        GLOB_ITEM_INT("offsetScaledLogVariance", 0xffff, 0, UINT16_MAX),
        PORT_ITEM_INT("path_trace_enabled", 0, 0, 1),
@@ -359,17 +367,7 @@ static enum parser_result parse_port_setting(struct config 
*cfg,
        if (r != NOT_PARSED)
                return r;
 
-       if (!strcmp(option, "network_transport")) {
-               if (!strcasecmp("L2", value))
-                       iface->transport = TRANS_IEEE_802_3;
-               else if (!strcasecmp("UDPv4", value))
-                       iface->transport = TRANS_UDP_IPV4;
-               else if (!strcasecmp("UDPv6", value))
-                       iface->transport = TRANS_UDP_IPV6;
-               else
-                       return BAD_VALUE;
-
-       } else if (!strcmp(option, "delay_mechanism")) {
+       if (!strcmp(option, "delay_mechanism")) {
                if (!strcasecmp("Auto", value))
                        iface->dm = DM_AUTO;
                else if (!strcasecmp("E2E", value))
@@ -472,18 +470,6 @@ static enum parser_result parse_global_setting(const char 
*option,
                                return BAD_VALUE;
                }
 
-       } else if (!strcmp(option, "network_transport")) {
-               if (!(cfg_ignore & CFG_IGNORE_TRANSPORT)) {
-                       if (!strcasecmp("UDPv4", value))
-                               cfg->transport = TRANS_UDP_IPV4;
-                       else if (!strcasecmp("UDPv6", value))
-                               cfg->transport = TRANS_UDP_IPV6;
-                       else if (!strcasecmp("L2", value))
-                               cfg->transport = TRANS_IEEE_802_3;
-                       else
-                               return BAD_VALUE;
-               }
-
        } else if (!strcmp(option, "clock_servo")) {
                if (!strcasecmp("pi", value))
                        cfg->clock_servo = CLOCK_SERVO_PI;
@@ -720,7 +706,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;
-       iface->transport = cfg->transport;
        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 9100083..3cfc6ac 100644
--- a/config.h
+++ b/config.h
@@ -36,14 +36,12 @@ struct interface {
        STAILQ_ENTRY(interface) list;
        char name[MAX_IFNAME_SIZE + 1];
        enum delay_mechanism dm;
-       enum transport_type transport;
        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_TRANSPORT    (1 << 1)
 #define CFG_IGNORE_TIMESTAMPING (1 << 2)
 
 struct config {
@@ -58,7 +56,6 @@ struct config {
 
        /* the rest are legacy fields */
        enum timestamp_type timestamping;
-       enum transport_type transport;
        enum delay_mechanism dm;
 
        struct default_ds dds;
diff --git a/port.c b/port.c
index 2299831..706183f 100644
--- a/port.c
+++ b/port.c
@@ -2506,6 +2506,7 @@ struct port *port_open(int phc_index,
 {
        struct config *cfg = clock_config(clock);
        struct port *p = malloc(sizeof(*p));
+       enum transport_type transport;
        int i;
 
        if (!p)
@@ -2515,8 +2516,9 @@ struct port *port_open(int phc_index,
 
        p->phc_index = phc_index;
        p->jbod = config_get_int(cfg, interface->name, "boundary_clock_jbod");
+       transport = config_get_int(cfg, interface->name, "network_transport");
 
-       if (interface->transport == TRANS_UDS)
+       if (transport == TRANS_UDS)
                ; /* UDS cannot have a PHC. */
        else if (!interface->ts_info.valid)
                pr_warning("port %d: get_ts_info not supported", number);
@@ -2541,7 +2543,7 @@ struct port *port_open(int phc_index,
        p->rx_timestamp_offset = config_get_int(cfg, p->name, "ingressLatency");
        p->tx_timestamp_offset = config_get_int(cfg, p->name, "egressLatency");
        p->clock = clock;
-       p->trp = transport_create(cfg, interface->transport);
+       p->trp = transport_create(cfg, transport);
        if (!p->trp)
                goto err_port;
        p->timestamping = timestamping;
diff --git a/ptp4l.c b/ptp4l.c
index b448d55..52fff25 100644
--- a/ptp4l.c
+++ b/ptp4l.c
@@ -63,7 +63,6 @@ static struct config cfg_settings = {
 
        .timestamping = TS_HARDWARE,
        .dm = DM_E2E,
-       .transport = TRANS_UDP_IPV4,
        .clock_servo = CLOCK_SERVO_PI,
 
        .ptp_dst_mac = ptp_dst_mac,
@@ -112,7 +111,6 @@ int main(int argc, char *argv[])
        struct interface *iface;
        int *cfg_ignore = &cfg_settings.cfg_ignore;
        enum delay_mechanism *dm = &cfg_settings.dm;
-       enum transport_type *transport = &cfg_settings.transport;
        enum timestamp_type *timestamping = &cfg_settings.timestamping;
        struct clock *clock;
        struct config *cfg = &cfg_settings;
@@ -144,16 +142,19 @@ int main(int argc, char *argv[])
                        *cfg_ignore |= CFG_IGNORE_DM;
                        break;
                case '2':
-                       *transport = TRANS_IEEE_802_3;
-                       *cfg_ignore |= CFG_IGNORE_TRANSPORT;
+                       if (config_set_int(cfg, "network_transport",
+                                           TRANS_IEEE_802_3))
+                               return -1;
                        break;
                case '4':
-                       *transport = TRANS_UDP_IPV4;
-                       *cfg_ignore |= CFG_IGNORE_TRANSPORT;
+                       if (config_set_int(cfg, "network_transport",
+                                           TRANS_UDP_IPV4))
+                               return -1;
                        break;
                case '6':
-                       *transport = TRANS_UDP_IPV6;
-                       *cfg_ignore |= CFG_IGNORE_TRANSPORT;
+                       if (config_set_int(cfg, "network_transport",
+                                           TRANS_UDP_IPV6))
+                               return -1;
                        break;
                case 'H':
                        *timestamping = TS_HARDWARE;
-- 
2.1.4


------------------------------------------------------------------------------
_______________________________________________
Linuxptp-devel mailing list
Linuxptp-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxptp-devel

Reply via email to