You’d have to look at the actual debug output and environment to see why it didn’t occur. Just enabling the option doesn’t cause it to happen, conditions also have to be right. Same codec, same packetization, no Local channels, some other things.
The process for collecting debug information is documented on the wiki[1]. As part of bridging calls the module will state why it can’t do direct media in the debug. I will say though, that, if they aren’t behind the same NAT then it’s probably not going to work and you’re in for a world of no audio and pain.
If obfuscating addresses, it is is important to distinguish between different addresses and to distinguish between private and public address ranges.
Lots of things inhibit direct media and there is far too little information here to exclude all of them.
Server B doesn’t appear to be Asterisk, yet that is the one that would actually initiate direct media, given that server A and server C only handle one leg each. Direct media is only possible, by definition, if the call has both A and B legs. Why are you are asking on an Asterisk about how to configure your session border controller?
Server A will honour a direct media request initiated by Server B regardless of its own direct media setting. Conversely, it will never send media directly to C unless B asks it to do so.
One can’t tell if direct media is in use in the A to C direction without the SDP replies.