udp6: add an option to set the multicast scope.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>master
parent
f92f09f563
commit
d83cd7283c
5
config.c
5
config.c
|
@ -255,6 +255,11 @@ static enum parser_result parse_global_setting(const char *option,
|
||||||
for (i = 0; i < MAC_LEN; i++)
|
for (i = 0; i < MAC_LEN; i++)
|
||||||
cfg->p2p_dst_mac[i] = mac[i];
|
cfg->p2p_dst_mac[i] = mac[i];
|
||||||
|
|
||||||
|
} else if (!strcmp(option, "udp6_scope")) {
|
||||||
|
if (1 != sscanf(value, "%hhx", &u8) || (u8 & 0xF0))
|
||||||
|
return BAD_VALUE;
|
||||||
|
*cfg->udp6_scope = u8;
|
||||||
|
|
||||||
} else if (!strcmp(option, "logging_level")) {
|
} else if (!strcmp(option, "logging_level")) {
|
||||||
if (1 != sscanf(value, "%d", &val) ||
|
if (1 != sscanf(value, "%d", &val) ||
|
||||||
!(val >= PRINT_LEVEL_MIN && val <= PRINT_LEVEL_MAX))
|
!(val >= PRINT_LEVEL_MIN && val <= PRINT_LEVEL_MAX))
|
||||||
|
|
1
config.h
1
config.h
|
@ -71,6 +71,7 @@ struct config {
|
||||||
|
|
||||||
unsigned char *ptp_dst_mac;
|
unsigned char *ptp_dst_mac;
|
||||||
unsigned char *p2p_dst_mac;
|
unsigned char *p2p_dst_mac;
|
||||||
|
unsigned char *udp6_scope;
|
||||||
|
|
||||||
int print_level;
|
int print_level;
|
||||||
int use_syslog;
|
int use_syslog;
|
||||||
|
|
|
@ -43,6 +43,7 @@ clock_servo pi
|
||||||
transportSpecific 0x0
|
transportSpecific 0x0
|
||||||
ptp_dst_mac 01:1B:19:00:00:00
|
ptp_dst_mac 01:1B:19:00:00:00
|
||||||
p2p_dst_mac 01:80:C2:00:00:0E
|
p2p_dst_mac 01:80:C2:00:00:0E
|
||||||
|
udp6_scope 0x0E
|
||||||
#
|
#
|
||||||
# Default interface options
|
# Default interface options
|
||||||
#
|
#
|
||||||
|
|
2
ptp4l.c
2
ptp4l.c
|
@ -31,6 +31,7 @@
|
||||||
#include "raw.h"
|
#include "raw.h"
|
||||||
#include "sk.h"
|
#include "sk.h"
|
||||||
#include "transport.h"
|
#include "transport.h"
|
||||||
|
#include "udp6.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
|
||||||
int assume_two_step = 0;
|
int assume_two_step = 0;
|
||||||
|
@ -78,6 +79,7 @@ static struct config cfg_settings = {
|
||||||
|
|
||||||
.ptp_dst_mac = ptp_dst_mac,
|
.ptp_dst_mac = ptp_dst_mac,
|
||||||
.p2p_dst_mac = p2p_dst_mac,
|
.p2p_dst_mac = p2p_dst_mac,
|
||||||
|
.udp6_scope = &udp6_scope,
|
||||||
|
|
||||||
.print_level = LOG_INFO,
|
.print_level = LOG_INFO,
|
||||||
.use_syslog = 1,
|
.use_syslog = 1,
|
||||||
|
|
4
udp6.c
4
udp6.c
|
@ -40,6 +40,8 @@
|
||||||
#define PTP_PRIMARY_MCAST_IP6ADDR "FF0E:0:0:0:0:0:0:181"
|
#define PTP_PRIMARY_MCAST_IP6ADDR "FF0E:0:0:0:0:0:0:181"
|
||||||
#define PTP_PDELAY_MCAST_IP6ADDR "FF02:0:0:0:0:0:0:6B"
|
#define PTP_PDELAY_MCAST_IP6ADDR "FF02:0:0:0:0:0:0:6B"
|
||||||
|
|
||||||
|
unsigned char udp6_scope = 0x0E;
|
||||||
|
|
||||||
struct udp6 {
|
struct udp6 {
|
||||||
struct transport t;
|
struct transport t;
|
||||||
int index;
|
int index;
|
||||||
|
@ -160,6 +162,8 @@ static int udp6_open(struct transport *t, char *name, struct fdarray *fda,
|
||||||
if (1 != inet_pton(AF_INET6, PTP_PRIMARY_MCAST_IP6ADDR, &mc6_addr[MC_PRIMARY]))
|
if (1 != inet_pton(AF_INET6, PTP_PRIMARY_MCAST_IP6ADDR, &mc6_addr[MC_PRIMARY]))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
mc6_addr[MC_PRIMARY].s6_addr[1] = udp6_scope;
|
||||||
|
|
||||||
if (1 != inet_pton(AF_INET6, PTP_PDELAY_MCAST_IP6ADDR, &mc6_addr[MC_PDELAY]))
|
if (1 != inet_pton(AF_INET6, PTP_PDELAY_MCAST_IP6ADDR, &mc6_addr[MC_PDELAY]))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
|
6
udp6.h
6
udp6.h
|
@ -23,6 +23,12 @@
|
||||||
#include "fd.h"
|
#include "fd.h"
|
||||||
#include "transport.h"
|
#include "transport.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The desired scope for the multicast messages. This will be used as
|
||||||
|
* the second byte of the primary IPv6 address. See RFC 4291.
|
||||||
|
*/
|
||||||
|
extern unsigned char udp6_scope;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Allocate an instance of a UDP/IPv6 transport.
|
* Allocate an instance of a UDP/IPv6 transport.
|
||||||
* @return Pointer to a new transport instance on success, NULL otherwise.
|
* @return Pointer to a new transport instance on success, NULL otherwise.
|
||||||
|
|
Loading…
Reference in New Issue