Add a configuration option to specify the L2 MAC addresses.

Signed-off-by: Richard Cochran <richardcochran@gmail.com>
master
Richard Cochran 2012-07-27 11:30:22 +02:00
parent 928abf32f2
commit 7460d2756a
5 changed files with 29 additions and 4 deletions

View File

@ -19,14 +19,16 @@
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include "config.h" #include "config.h"
#include "ether.h"
static void scan_line(char *s, struct config *cfg) static void scan_line(char *s, struct config *cfg)
{ {
double df; double df;
int val; int i, val;
Integer8 i8; Integer8 i8;
UInteger16 u16; UInteger16 u16;
UInteger8 u8; UInteger8 u8;
unsigned char mac[MAC_LEN];
struct defaultDS *dds = cfg->dds; struct defaultDS *dds = cfg->dds;
struct port_defaults *pod = cfg->pod; struct port_defaults *pod = cfg->pod;
@ -99,6 +101,18 @@ static void scan_line(char *s, struct config *cfg)
if (df > 0.0 && df < 1.0) if (df > 0.0 && df < 1.0)
*cfg->pi_integral_const = df; *cfg->pi_integral_const = df;
} else if (MAC_LEN == sscanf(s, " ptp_dst_mac %hhx:%hhx:%hhx:%hhx:%hhx:%hhx",
&mac[0], &mac[1], &mac[2], &mac[3], &mac[4], &mac[5])) {
for (i = 0; i < MAC_LEN; i++)
cfg->ptp_dst_mac[i] = mac[i];
} else if (MAC_LEN == sscanf(s, " p2p_dst_mac %hhx:%hhx:%hhx:%hhx:%hhx:%hhx",
&mac[0], &mac[1], &mac[2], &mac[3], &mac[4], &mac[5])) {
for (i = 0; i < MAC_LEN; i++)
cfg->p2p_dst_mac[i] = mac[i];
} }
} }

View File

@ -28,6 +28,8 @@ struct config {
int *tx_timestamp_retries; int *tx_timestamp_retries;
double *pi_proportional_const; double *pi_proportional_const;
double *pi_integral_const; double *pi_integral_const;
unsigned char *ptp_dst_mac;
unsigned char *p2p_dst_mac;
}; };
int config_read(char *name, struct config *cfg); int config_read(char *name, struct config *cfg);

View File

@ -19,7 +19,12 @@ announceReceiptTimeout 3
# #
# Run time options # Run time options
# #
transportSpecific 0x0
tx_timestamp_retries 2 tx_timestamp_retries 2
pi_proportional_const 0.0 pi_proportional_const 0.0
pi_integral_const 0.0 pi_integral_const 0.0
#
# Transport options
#
transportSpecific 0x0
ptp_dst_mac 01:1B:19:00:00:00
p2p_dst_mac 01:80:C2:00:00:0E

View File

@ -32,6 +32,8 @@
int sk_tx_retries = 2; /*see sk.c*/ int sk_tx_retries = 2; /*see sk.c*/
double configured_pi_kp, configured_pi_ki; /*see pi.c*/ double configured_pi_kp, configured_pi_ki; /*see pi.c*/
extern unsigned char ptp_dst_mac[]; /*see raw.c*/
extern unsigned char p2p_dst_mac[]; /*see raw.c*/
static int running = 1; static int running = 1;
static struct defaultDS ds; static struct defaultDS ds;
@ -219,6 +221,8 @@ int main(int argc, char *argv[])
cfg_settings.tx_timestamp_retries = &sk_tx_retries; cfg_settings.tx_timestamp_retries = &sk_tx_retries;
cfg_settings.pi_proportional_const = &configured_pi_kp; cfg_settings.pi_proportional_const = &configured_pi_kp;
cfg_settings.pi_integral_const = &configured_pi_ki; cfg_settings.pi_integral_const = &configured_pi_ki;
cfg_settings.ptp_dst_mac = ptp_dst_mac;
cfg_settings.p2p_dst_mac = p2p_dst_mac;
if (config && config_read(config, &cfg_settings)) { if (config && config_read(config, &cfg_settings)) {
fprintf(stderr, "failed to read configuration file\n"); fprintf(stderr, "failed to read configuration file\n");

4
raw.c
View File

@ -138,8 +138,8 @@ static int raw_close(struct transport *t, struct fdarray *fda)
return 0; return 0;
} }
static unsigned char ptp_dst_mac[MAC_LEN] = { PTP_DST_MAC }; unsigned char ptp_dst_mac[MAC_LEN] = { PTP_DST_MAC };
static unsigned char p2p_dst_mac[MAC_LEN] = { P2P_DST_MAC }; unsigned char p2p_dst_mac[MAC_LEN] = { P2P_DST_MAC };
static int open_socket(char *name, int event) static int open_socket(char *name, int event)
{ {