From: Ethan Jackson <ethan@nicira.com>
Date: Tue, 22 Mar 2011 21:28:22 +0000 (-0700)
Subject: cfm: Move destination address to cfm.h
X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=15df7ea8d9a338113fc0bd8d2a0a841ec7ce4b6c;p=openvswitch

cfm: Move destination address to cfm.h

Future patches will require the use of this information globally.
---

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. */