Some profiles forbid multicast altogther.
Signed-off-by: Richard Cochran <[email protected]>
---
config.c | 1 +
configs/default.cfg | 1 +
port.c | 6 ++++++
port_private.h | 1 +
unicast_service.c | 2 ++
5 files changed, 11 insertions(+)
diff --git a/config.c b/config.c
index 15cf5c5..dc9f9eb 100644
--- a/config.c
+++ b/config.c
@@ -218,6 +218,7 @@ struct config_item config_tab[] = {
PORT_ITEM_INT("hybrid_e2e", 0, 0, 1),
PORT_ITEM_INT("ignore_transport_specific", 0, 0, 1),
PORT_ITEM_INT("ingressLatency", 0, INT_MIN, INT_MAX),
+ PORT_ITEM_INT("inhibit_multicast_service", 0, 0, 1),
GLOB_ITEM_INT("initial_delay", 0, 0, INT_MAX),
GLOB_ITEM_INT("kernel_leap", 1, 0, 1),
PORT_ITEM_INT("logAnnounceInterval", 1, INT8_MIN, INT8_MAX),
diff --git a/configs/default.cfg b/configs/default.cfg
index 00ec61f..c5a8b57 100644
--- a/configs/default.cfg
+++ b/configs/default.cfg
@@ -39,6 +39,7 @@ logging_level 6
path_trace_enabled 0
follow_up_info 0
hybrid_e2e 0
+inhibit_multicast_service 0
net_sync_monitor 0
tc_spanning_tree 0
tx_timestamp_timeout 1
diff --git a/port.c b/port.c
index 8cc1641..9e3454b 100644
--- a/port.c
+++ b/port.c
@@ -1333,6 +1333,9 @@ int port_tx_announce(struct port *p, struct address *dst)
struct ptp_message *msg;
int err;
+ if (p->inhibit_multicast_service && !dst) {
+ return 0;
+ }
if (!port_capable(p)) {
return 0;
}
@@ -1399,6 +1402,9 @@ int port_tx_sync(struct port *p, struct address *dst)
return -1;
}
+ if (p->inhibit_multicast_service && !dst) {
+ return 0;
+ }
if (!port_capable(p)) {
return 0;
}
diff --git a/port_private.h b/port_private.h
index b876b86..4a122f4 100644
--- a/port_private.h
+++ b/port_private.h
@@ -137,6 +137,7 @@ struct port {
struct unicast_master_table *unicast_master_table;
/* unicast service mode */
struct unicast_service *unicast_service;
+ int inhibit_multicast_service;
};
#define portnum(p) (p->portIdentity.portNumber)
diff --git a/unicast_service.c b/unicast_service.c
index 09e0eac..220a738 100644
--- a/unicast_service.c
+++ b/unicast_service.c
@@ -418,6 +418,8 @@ int unicast_service_initialize(struct port *p)
free(p->unicast_service);
return -1;
}
+ p->inhibit_multicast_service =
+ config_get_int(cfg, p->name, "inhibit_multicast_service");
return 0;
}
--
2.11.0
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Linuxptp-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linuxptp-devel