diff options
author | Neale Ranns <nranns@cisco.com> | 2017-03-15 04:22:25 -0700 |
---|---|---|
committer | Florin Coras <florin.coras@gmail.com> | 2017-03-27 17:45:06 +0000 |
commit | 2e7fbcc08152da5c6a17ed80ba08cd37edec6c8c (patch) | |
tree | 09e4f98dcc45d4105c04f2ba4a5fbae2cc63ff7d /src/vnet/adj/adj_mcast.c | |
parent | 70efbfcd49aaee207ff3d33ac60083fedd9f1eec (diff) |
Mcast rewrite no memcpy
use a 32bit mask in the adjacency to AND with the IP address and OR into the rewrite.
Change-Id: I80b0f246c18fd74f3e43c5d49e25833412f34665
Signed-off-by: Neale Ranns <nranns@cisco.com>
Diffstat (limited to 'src/vnet/adj/adj_mcast.c')
-rw-r--r-- | src/vnet/adj/adj_mcast.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/vnet/adj/adj_mcast.c b/src/vnet/adj/adj_mcast.c index a3ba4d6ab18..4f678e43e80 100644 --- a/src/vnet/adj/adj_mcast.c +++ b/src/vnet/adj/adj_mcast.c @@ -100,7 +100,9 @@ adj_mcast_add_or_lock (fib_protocol_t proto, */ void adj_mcast_update_rewrite (adj_index_t adj_index, - u8 *rewrite) + u8 *rewrite, + u8 offset, + u32 mask) { ip_adjacency_t *adj; @@ -118,6 +120,13 @@ adj_mcast_update_rewrite (adj_index_t adj_index, vnet_get_main(), adj->rewrite_header.sw_if_index), rewrite); + /* + * set the fields corresponding to the mcast IP address rewrite + * The mask must be stored in network byte order, since the packet's + * IP address will also be in network order. + */ + adj->rewrite_header.dst_mcast_offset = offset; + adj->rewrite_header.dst_mcast_mask = clib_host_to_net_u32(mask); } void |