I tried to setup a simple bridge between all the ports,
That's the right approach.
but none of the devices get internet this way.
... and it's really difficult to debug this if you don't give details about what you did.
There are many types of bridgings, virtual networks, etc. listed in this post, but I don't seem to understand, which option I should go with.
After a quick look all of those seem to complicated, or don't really match your situation.
First step is to set up everything manually, then see how you can make it persistent. Assuming your ports are
eth2, do something like:
ip link add br0 type bridge
ip link set eth0 master br0
ip link set eth1 master br0
ip link set eth2 master br0
ip link set br0 up
eth0 was attached to your router R before, now you need to change the configuration on A so that
br0 is used everywhere
eth0 was before. In particular, any ip address assigned to
eth0 is no longer valid, and the DHCP client should manage
Once you've done that, test that A has connectivity to the router, and to the internet.
Then attach machines B and C to
eth2, see that some DHCP client is running on B and C, and see that they get DHCP responses. Debug with
wireshark if necessary.
Then find out which of the many networking flavours you have on A (systemd, network manager, old-style
/etc/network/interfaces, and make the bridge permanent. Google for documentation according to the flavour.