Re: [vpp-dev] Q) Is it a possible acl-plugin race condtion?

2022-12-12 Thread Chul-Woong Yang
Thank you for your answer.
It's for fast datapath processing, I see.
However, I'm curious whether it is an accepted behavior to stop routing while 
processing configuration change.
Are production CISCO routers made in that way?

Kind regards,
Chul-Woong

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



Re: [vpp-dev] Q) Is it a possible acl-plugin race condtion?

2022-12-12 Thread Benoit Ganne (bganne) via lists.fd.io
API and CLI are executed under the worker barrier by default in VPP, only the 
VPP main thread runs, and workers are stopped.
For an API/CLI to be executed concurrently with workers, it must be explicitly 
marked as such (mp_safe attribute).
It does not seem to be the case for ACL, so it should be fine.

Best
ben

> -Original Message-
> From: vpp-dev@lists.fd.io  On Behalf Of Chul-Woong
> Yang
> Sent: Monday, December 12, 2022 3:50
> To: vpp-dev@lists.fd.io
> Subject: [vpp-dev] Q) Is it a possible acl-plugin race condtion?
> 
> Hi, team.
> 
> I'm reading acl-plugin code and have a question on race condition.
> When vpp needs to update acl rules, it does not keep a refcnt or
> something and just `vec_free`s the rules. Is it safe?:
> ```
>   /* ACL updater: from acl_add_list() */
> {
>   a = am->acls + *acl_list_index;
>   /* Get rid of the old rules */
>   if (a->rules)
> vec_free (a->rules);   /* (A) */
> }
> ...
> 
> 
>   /* ACL user: from single_acl_match_5tuple() */
>   for (i = 0; i < vec_len(acl_rules); i++)
> {
>   r = _rules[i];
>   ... /* (B) */
> ```
> 
> I worry that vpp can SEGV by refering freed memory when it referes an
> acl rules `r` in (B) while another thread frees the rule in (A).
> 
> Best regards,
> Chul-Woong

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



[vpp-dev] Q) Is it a possible acl-plugin race condtion?

2022-12-11 Thread Chul-Woong Yang
Hi, team.

I'm reading acl-plugin code and have a question on race condition.
When vpp needs to update acl rules, it does not keep a refcnt or
something and just `vec_free`s the rules. Is it safe?:
```
  /* ACL updater: from acl_add_list() */
{
  a = am->acls + *acl_list_index;
  /* Get rid of the old rules */
  if (a->rules)
vec_free (a->rules);   /* (A) */
}
...


  /* ACL user: from single_acl_match_5tuple() */
  for (i = 0; i < vec_len(acl_rules); i++)
{
  r = _rules[i];
  ... /* (B) */
```

I worry that vpp can SEGV by refering freed memory when it referes an
acl rules `r` in (B) while another thread frees the rule in (A).

Best regards,
Chul-Woong

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