+.. autodoxyclass:: simgrid::s4u::Link
+
+Basic management
+----------------
+
+.. tabs::
+
+ .. group-tab:: C++
+
+ .. code-block:: C++
+
+ #include <simgrid/s4u/Link.hpp>
+
+ Note that there is no LinkPtr type, and that you cannot use the RAII
+ idiom on hosts because SimGrid does not allow (yet) to create nor
+ destroy resources once the simulation is started.
+
+ .. group-tab:: Python
+
+ .. code:: Python
+
+ from simgrid import Link
+
+ .. group-tab:: C
+
+ .. code:: C
+
+ #include <simgrid/link.h>
+
+ .. doxygentypedef:: sg_link_t
+ .. cpp:type:: const s4u_Link* const_sg_link_t
+
+ Pointer to a constant link object.
+
+Retrieving links
+----------------
+
+.. tabs::
+
+ .. group-tab:: C++
+
+ See also :cpp:func:`simgrid::s4u::Engine::get_all_links`.
+
+ .. autodoxymethod:: simgrid::s4u::Link::by_name(const std::string &name)
+ .. autodoxymethod:: simgrid::s4u::Link::by_name_or_null(const std::string &name)
+
+ .. group-tab:: C
+
+ .. autodoxymethod:: sg_link_by_name(const char *name)
+ .. autodoxymethod:: sg_link_count()
+ .. autodoxymethod:: sg_link_list()
+
+Querying info
+--------------
+
+.. tabs::
+
+ .. group-tab:: C++
+
+ .. autodoxymethod:: simgrid::s4u::Link::get_bandwidth()
+ .. autodoxymethod:: simgrid::s4u::Link::get_cname()
+ .. autodoxymethod:: simgrid::s4u::Link::get_latency()
+ .. autodoxymethod:: simgrid::s4u::Link::get_name()
+ .. autodoxymethod:: simgrid::s4u::Link::get_sharing_policy()
+ .. autodoxymethod:: simgrid::s4u::Link::get_usage()
+ .. autodoxymethod:: simgrid::s4u::Link::is_used()
+
+ .. group-tab:: C
+
+ .. autodoxymethod:: sg_link_bandwidth(const_sg_link_t link)
+ .. autodoxymethod:: sg_link_is_shared(const_sg_link_t link)
+ .. autodoxymethod:: sg_link_latency(const_sg_link_t link)
+ .. autodoxymethod:: sg_link_name(const_sg_link_t link)
+
+User data and properties
+------------------------
+
+.. tabs::
+
+ .. group-tab:: C++
+
+ .. autodoxymethod:: simgrid::s4u::Link::get_property(const std::string &key)
+ .. autodoxymethod:: simgrid::s4u::Link::set_property(const std::string &key, const std::string &value)
+
+ .. group-tab:: C
+
+ .. autodoxymethod:: sg_link_data(const_sg_link_t link)
+ .. autodoxymethod:: sg_link_data_set(sg_link_t link, void *data)
+
+On/Off
+------
+
+.. tabs::
+
+ .. group-tab:: C++
+
+ See also :cpp:func:`simgrid::s4u::Link::set_state_profile`.
+
+ .. autodoxymethod:: simgrid::s4u::Link::is_on()
+ .. autodoxymethod:: simgrid::s4u::Link::turn_off()
+ .. autodoxymethod:: simgrid::s4u::Link::turn_on()
+
+Dynamic profiles
+----------------
+
+.. tabs::
+
+ .. group-tab:: C++
+
+ .. autodoxymethod:: simgrid::s4u::Link::set_bandwidth_profile(kernel::profile::Profile *profile)
+ .. autodoxymethod:: simgrid::s4u::Link::set_latency_profile(kernel::profile::Profile *profile)
+ .. autodoxymethod:: simgrid::s4u::Link::set_state_profile(kernel::profile::Profile *profile)
+
+Signals
+-------
+
+.. tabs::
+
+ .. group-tab:: C++
+
+ .. autodoxyvar:: simgrid::s4u::Link::on_bandwidth_change
+ .. cpp:var:: xbt::signal<void(kernel::resource::NetworkAction&, Host* src, Host* dst)> Link::on_communicate
+ .. autodoxyvar:: simgrid::s4u::Link::on_communication_state_change
+ .. autodoxyvar:: simgrid::s4u::Link::on_creation
+ .. autodoxyvar:: simgrid::s4u::Link::on_destruction
+ .. autodoxyvar:: simgrid::s4u::Link::on_state_change