Hi Satish, 

You can set environment variables within the context of the command that you 
are executing as opposed to exporting them for the whole system. If you try 
running nginx as per the wiki page mentioned previously, you should be able to 
confirm LD_PRELOAD is not globally set after you execute the commands. 

Also, note that LDP is not guaranteed to work with all applications. 

Regards,
Florin

> On Jul 22, 2021, at 11:46 AM, satish amara <satishkam...@gmail.com> wrote:
> 
> Hi Florin,
>   Thank you for clarifying.  You said that when the LD_PRELOAD env variable 
> is set just before I start the application then only that application 
> syscalls are intercepted. Can you explain how is that mapping is done ( To 
> determine which application socket API needs to be intercepted) ? For 
> example, I have application A   started initially which is using standard 
> socket API.  Also, I have application B which I started after setting the 
> LD_PRELOAD variable and then I have application C which wants to use standard 
> socket API which I started after application B. So I unset the env variable.  
> Can you explain which system calls are intercepted and which are not...
> I would expect Application A to still used traditional socket API (not 
> intercepted) and even after setting the LD_PRELOAD variable and Application C 
> to use traditional socket API after unsetting the variable and Application B 
> to continue to use the LDP path (Socket calls intercepted).   Is it possible?
> 
> Thanks,
> Satish K Amara
> 
> On Thu, Jul 22, 2021 at 1:29 PM Florin Coras <fcoras.li...@gmail.com 
> <mailto:fcoras.li...@gmail.com>> wrote:
> Hi Satish, 
> 
> If the LD_PRELOAD env variable is only set when starting the application, 
> only that application’s syscalls are intercepted. Also note that we don’t 
> intercept all syscalls (check ldp.c for more details). So yes, the 
> architecture in your diagram should be possible. 
> 
> Regards,
> Florin
> 
>> On Jul 22, 2021, at 9:35 AM, satish amara <satishkam...@gmail.com 
>> <mailto:satishkam...@gmail.com>> wrote:
>> 
>> Hi Florin,
>>    Thanks!  It mentions setting some config files and env variables. The 
>> LDP_PATH sets the path  libvcl_ldpreload.so
>> I am trying to understand the logistics.  Once I do that does mean all 
>> networking applications on the host try to use LDP if they can.
>> I don't have any application-specific config. Please look into my attached 
>> diagram.  Do I have the ability to tell only specific apps to use LDP.  This 
>> is for cases where I don't want to rewrite the socket API.
>> 
>> Thanks,
>> Satish K Amara
>> 
>> 
>> 
>> On Thu, Jul 22, 2021 at 10:36 AM Florin Coras <fcoras.li...@gmail.com 
>> <mailto:fcoras.li...@gmail.com>> wrote:
>> Hi Satish, 
>>  
>> You can find an example of how to use Nginx with LDP here [1]. In general 
>> you can find host stack documentation here [2].
>>  
>> Regards,
>> Florin
>>  
>> [1] https://wiki.fd.io/view/VPP/HostStack/LDP/nginx 
>> <https://wiki.fd.io/view/VPP/HostStack/LDP/nginx>
>> [2] https://wiki.fd.io/view/VPP/HostStack 
>> <https://wiki.fd.io/view/VPP/HostStack>
>>  
>> 
>>> On Jul 22, 2021, at 7:27 AM, satish amara <satishkam...@gmail.com 
>>> <mailto:satishkam...@gmail.com>> wrote:
>>> 
>>> Hi,
>>>    I see we have a couple of options for user applications to use the VPP 
>>> TCP/IP stack. Either by VCL or LD_PRELOAD. I am trying to understand if we 
>>> can selectively intercept syscalls and injects them into VLS for specific 
>>> applications. Is LD_PRELOAD can application specific. If so what is the 
>>> procedure?
>>> 
>>> Thanks,
>> 
>> <PacketFlowpng.png>
> 

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#19853): https://lists.fd.io/g/vpp-dev/message/19853
Mute This Topic: https://lists.fd.io/mt/84380120/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