> No, a u64 suffices. See how the u64 works with a bihash for any value, not
> just pkt_filter4_0_value, in the code example given below.

Ok thanks. So you use the u64 to store a pointer to your structure allocated on 
the heap.
The usual way to do this in VPP instead is to allocate your structure in a 
pool. You can then store the u32 index of your data in the bihash and use 
opaque_index directly.

value = pool_get(pkt_filter4_pool);
u32 index = value - pkt_filter4_pool;
memcpy(value, &val, sizeof(val));
kv.value = index;
clib_bihash_add_del_48_8 (&ump->hash_table_pkt_filter4_0, &kv, 1);

Then you can retrieve value using this index (either coming from bihash lookup 
or from opaque_index):
value = pool_elt_at_index(pkt_filter4_pool, index);

I am not convinced adding metadata in opaque or opaque2 is really needed here.

Best
ben

> struct pkt_filter4_0_value val = {}, *value;
> 
>   val.action = permit4;
> 
>   val.u.permit4.abits = 130;
> 
>   val.u.permit4.ig_strip = 0;
> 
>   val.u.permit4.outer_desc = 1;
> 
>   val.u.permit4.teid = 5241;
> 
>   val.u.permit4.ip = 0x03030302;
> 
>   val.u.permit4.src_ip = 0x03030301;
> 
>   val.u.permit4.dstPort = 2152;
> 
>   val.u.permit4.filt_dir = 1;
> 
>   val.u.permit4.reflec_qos = 0;
> 
> 
> 
>   value = malloc(sizeof(val));
> 
>   memcpy(value, &val, sizeof(val));
> 
>   kv.value = (u64) value;
> 
>   clib_bihash_add_del_48_8 (&ump->hash_table_pkt_filter4_0, &kv, 1);
> 
> 
> 
> Hemant
> 
> 
> 
> -----Original Message-----
> From: Benoit Ganne (bganne) <bga...@cisco.com>
> Sent: Wednesday, January 20, 2021 8:13 AM
> To: hem...@mnkcg.com; ne...@graphiant.com; ayour...@gmail.com
> Cc: vpp-dev@lists.fd.io
> Subject: RE: [vpp-dev] classifier howto?
> 
> 
> 
> > A github link is included in the JIRA issue to articulate the use case,
> 
> > https://jira.fd.io/browse/VPP-1967 <https://jira.fd.io/browse/VPP-1967>
> 
> > The github link has a value for a classifier entry shown:
> 
> > https://github.com/FDio/vpp/pull/33
> <https://github.com/FDio/vpp/pull/33>
> 
> > The value is a value used in a 5G UPF.
> 
> 
> 
> Is the 64-bits value you refer to the "struct pkt_filter4_0_value"? It
> looks much bigger than 64-bits to me...
> 
> 
> 
> Best
> 
> ben

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#18569): https://lists.fd.io/g/vpp-dev/message/18569
Mute This Topic: https://lists.fd.io/mt/79925983/21656
Group Owner: vpp-dev+ow...@lists.fd.io
Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to