From 15df7ea8d9a338113fc0bd8d2a0a841ec7ce4b6c Mon Sep 17 00:00:00 2001 From: Ethan Jackson Date: Tue, 22 Mar 2011 14:28:22 -0700 Subject: [PATCH] cfm: Move destination address to cfm.h Future patches will require the use of this information globally. --- lib/cfm.c | 5 ++--- lib/cfm.h | 4 ++++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/cfm.c b/lib/cfm.c index 0d720946..683cc712 100644 --- a/lib/cfm.c +++ b/lib/cfm.c @@ -33,7 +33,6 @@ VLOG_DEFINE_THIS_MODULE(cfm); #define CCM_OPCODE 1 /* CFM message opcode meaning CCM. */ -#define DEST_ADDR UINT64_C(0x0180C2000030) /* MD level 0 CCM destination. */ struct cfm_internal { struct cfm cfm; @@ -125,7 +124,7 @@ compose_ccm(struct cfm_internal *cfmi) eth = ofpbuf_put_zeros(packet, ETH_HEADER_LEN); ccm = ofpbuf_put_zeros(packet, CCM_LEN); - eth_addr_from_uint64(DEST_ADDR, eth->eth_dst); + memcpy(eth->eth_dst, eth_addr_ccm, ETH_ADDR_LEN); memcpy(eth->eth_src, cfmi->cfm.eth_src, sizeof eth->eth_src); eth->eth_type = htons(ETH_TYPE_CFM); @@ -370,7 +369,7 @@ bool cfm_should_process_flow(const struct flow *flow) { return (ntohs(flow->dl_type) == ETH_TYPE_CFM - && eth_addr_to_uint64(flow->dl_dst) == DEST_ADDR); + && eth_addr_equals(flow->dl_dst, eth_addr_ccm)); } /* Updates internal statistics relevant to packet 'p'. Should be called on diff --git a/lib/cfm.h b/lib/cfm.h index f7007bb9..71778b7e 100644 --- a/lib/cfm.h +++ b/lib/cfm.h @@ -24,6 +24,10 @@ struct flow; +/* Ethernet destination address of CCM packets. */ +static const uint8_t eth_addr_ccm[ETH_ADDR_LEN] OVS_UNUSED + = { 0x01, 0x80, 0xC2, 0x00, 0x00, 0x30 }; + /* A 'cfm' represent a local Maintenance Point (MP) and its Connectivity Fault * Management (CFM) state machine. Its configuration variables should be set * by clients of the CFM library. */ -- 2.30.2