Oh yes, my fault. Please find it below: --- Index: config.c =================================================================== --- config.c (Revision 827) +++ config.c (Revision 830) @@ -236,6 +236,8 @@ GLOB_ITEM_INT("use_syslog", 1, 0, 1), GLOB_ITEM_STR("userDescription", ""), GLOB_ITEM_INT("verbose", 0, 0, 1), + GLOB_ITEM_INT("tosEventMessage", 56, 0, 63), + GLOB_ITEM_INT("tosGeneralMessage", 46, 0, 46) }; static enum parser_result Index: udp.c =================================================================== --- udp.c (Revision 827) +++ udp.c (Revision 830) @@ -149,6 +149,29 @@ return -1; } +// setting IP DSCP value here +static int set_priority(int sock_fd, uint8_t dscp) { + int tos; + socklen_t tos_len; + + if (!sock_fd) { + return 0; + } + + tos_len = sizeof(tos); + if (getsockopt(sock_fd, SOL_IP, IP_TOS, &tos, &tos_len) < 0) { + tos = 0; + } + + tos |= dscp<<2; + tos_len = sizeof(tos); + if (setsockopt(sock_fd, SOL_IP, IP_TOS, &tos, tos_len) < 0) { + return -1; + } + + return 0; +} + enum { MC_PRIMARY, MC_PDELAY }; static struct in_addr mcast_addr[2]; @@ -176,11 +199,23 @@ if (efd < 0) goto no_event; + // set DSCP priority for event messages + uint8_t event_dscp = config_get_int(t->cfg, NULL, "tosEventMessage"); + if(set_priority(efd, event_dscp) < 0) { + pr_warning("Could not set COS value for PTP event messages."); + } + gfd = open_socket(name, mcast_addr, GENERAL_PORT, ttl); if (gfd < 0) goto no_general; - if (sk_timestamping_init(efd, name, ts_type, TRANS_UDP_IPV4)) + // set DSCP priority for general messages + uint8_t general_dscp = config_get_int(t->cfg, NULL, "tosGeneralMessage"); + if(set_priority(gfd, general_dscp) < 0) { + pr_warning("Could not set DHCP value for PTP general messages."); + } + + if (sk_timestamping_init(efd, name, ts_type, TRANS_UDP_IPV4)) goto no_timestamping; if (sk_general_init(gfd))
Index: udp6.c =================================================================== --- udp6.c (Revision 827) +++ udp6.c (Revision 830) @@ -157,6 +157,29 @@ return -1; } +// setting IP DSCP value here +static int set_priority(int sock_fd, uint8_t dscp) { + int tos; + socklen_t tos_len; + + if (!sock_fd) { + return 0; + } + + tos_len = sizeof(tos); + if (getsockopt(sock_fd, SOL_IP, IP_TOS, &tos, &tos_len) < 0) { + tos = 0; + } + + tos |= dscp<<2; + tos_len = sizeof(tos); + if (setsockopt(sock_fd, SOL_IP, IP_TOS, &tos, tos_len) < 0) { + return -1; + } + + return 0; +} + enum { MC_PRIMARY, MC_PDELAY }; static struct in6_addr mc6_addr[2]; @@ -186,11 +209,23 @@ if (efd < 0) goto no_event; + // set DSCP priority for event messages + uint8_t event_dscp = config_get_int(t->cfg, NULL, "tosEventMessage"); + if(set_priority(efd, event_dscp) < 0) { + pr_warning("Could not set COS value for PTP event messages."); + } + gfd = open_socket_ipv6(name, mc6_addr, GENERAL_PORT, &udp6->index, hop_limit); if (gfd < 0) goto no_general; - if (sk_timestamping_init(efd, name, ts_type, TRANS_UDP_IPV6)) + // set DSCP priority for general messages + uint8_t general_dscp = config_get_int(t->cfg, NULL, "tosGeneralMessage"); + if(set_priority(gfd, general_dscp) < 0) { + pr_warning("Could not set DHCP value for PTP general messages."); + } + + if (sk_timestamping_init(efd, name, ts_type, TRANS_UDP_IPV6)) goto no_timestamping; if (sk_general_init(gfd)) --- Best regards Henry Jesuiter ------------------------------------------------------------------------------ Attend Shape: An AT&T Tech Expo July 15-16. Meet us at AT&T Park in San Francisco, CA to explore cutting-edge tech and listen to tech luminaries present their vision of the future. This family event has something for everyone, including kids. Get more information and register today. http://sdm.link/attshape _______________________________________________ Linuxptp-devel mailing list Linuxptp-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxptp-devel