Code Review
/
vpp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
MAP: 64-bit DMR
[vpp.git]
/
src
/
plugins
/
map
/
map.h
diff --git
a/src/plugins/map/map.h
b/src/plugins/map/map.h
index
45959f0
..
6587a8a
100644
(file)
--- a/
src/plugins/map/map.h
+++ b/
src/plugins/map/map.h
@@
-532,19
+532,23
@@
int map_ip6_reass_conf_buffers(u32 buffers);
static_always_inline void
ip4_map_t_embedded_address (map_domain_t *d,
static_always_inline void
ip4_map_t_embedded_address (map_domain_t *d,
-
ip6_address_t *ip6, const ip4_address_t *ip4)
+ ip6_address_t *ip6, const ip4_address_t *ip4)
{
{
- ASSERT(d->ip6_src_len == 96); //No support for other lengths for now
+ ASSERT(d->ip6_src_len == 96 || d->ip6_src_len == 64); //No support for other lengths for now
+ u8 offset = d->ip6_src_len == 64 ? 9 : 12;
ip6->as_u64[0] = d->ip6_src.as_u64[0];
ip6->as_u64[0] = d->ip6_src.as_u64[0];
- ip6->as_u
32[2] = d->ip6_src.as_u32[2
];
-
ip6->as_u32[3] = ip4->as_u32
;
+ ip6->as_u
64[1] = d->ip6_src.as_u64[1
];
+
clib_memcpy(&ip6->as_u8[offset], ip4, 4)
;
}
static_always_inline u32
ip6_map_t_embedded_address (map_domain_t *d, ip6_address_t *addr)
{
}
static_always_inline u32
ip6_map_t_embedded_address (map_domain_t *d, ip6_address_t *addr)
{
- ASSERT(d->ip6_src_len == 96); //No support for other lengths for now
- return addr->as_u32[3];
+ ASSERT(d->ip6_src_len == 64 || d->ip6_src_len == 96);
+ u32 x;
+ u8 offset = d->ip6_src_len == 64 ? 9 : 12;
+ clib_memcpy(&x, &addr->as_u8[offset], 4);
+ return x;
}
static inline void
}
static inline void