Commit c2c610fdc2 for frr

commit c2c610fdc2de0f5e4623c924c4462878e1870f8e
Author: Philippe Guibert <philippe.guibert@6wind.com>
Date:   Mon Oct 26 14:01:51 2026 +0100

    doc: fix duplicate clicmd warnings

    Building the user documentation reports duplicate descriptions:

    > doc/user/bgp-linkstate.rst:86: WARNING: duplicate clicmd description of
    >   distribute bgp-fabric-link-state [instance-id WORD], other instance in bgp
    > doc/user/bgp-linkstate.rst:4: WARNING: duplicate label bgp-link-state,
    >   other instance in doc/user/bgp.rst
    > doc/user/unreachability.rst:139: WARNING: duplicate clicmd description of
    >   show bgp [ipv4|ipv6] unreachability [PREFIX] [detail] [json], other
    >   instance in bgp
    > doc/user/bgp.rst:3510: WARNING: duplicate clicmd description of
    >   set extended-comm-list delete <EXTCOMMUNITY_LIST_NAME>, other instance
    >   in bgp
    > doc/user/routemap.rst:362: WARNING: duplicate clicmd description of
    >   set extended-comm-list delete <EXTCOMMUNITY_LIST_NAME>, other instance
    >   in bgp
    > doc/user/ospfd.rst:354: WARNING: duplicate clicmd description of
    >   shutdown, other instance in ospf6d
    > doc/user/pimv6.rst:162: WARNING: duplicate clicmd description of
    >   ip pim assert-interval (1000-86400000), other instance in pim
    > doc/user/pimv6.rst:207: WARNING: duplicate clicmd description of
    >   join-filter route-map RMAP_NAME, other instance in pim
    > [..]

    bgp-linkstate.rst and unreachability.rst are included in bgp.rst, but
    are not in the exclude list, so they are also built as standalone
    documents and all their commands and labels are defined twice.
    "set extended-comm-list delete" is described twice in bgp.rst, and
    once in routemap.rst. "shutdown" is described in ospfd, ospf6d, pim
    and pimv6 without daemon. "join-filter route-map" is described in pim
    and pimv6 without daemon. The pimv6 assert interval commands are
    documented with the "ip pim" prefix, while pim6d defines them as
    "ipv6 pim assert-interval" and "ipv6 pim assert-override-interval".

    Fix this:
    - exclude bgp-linkstate.rst and unreachability.rst, as for the other
      files included in bgp.rst.
    - remove the first "set extended-comm-list delete" description of
      bgp.rst, the second one is more complete, and tag it with the bgp
      daemon, as done for "set l3vpn next-hop encapsulation gre".
    - tag the "shutdown" and "join-filter route-map" commands with their
      daemon.
    - use the "ipv6 pim" prefix for the pimv6 assert interval commands.

    Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>

diff --git a/doc/user/bgp.rst b/doc/user/bgp.rst
index 4d26f25678..c3acd726e5 100644
--- a/doc/user/bgp.rst
+++ b/doc/user/bgp.rst
@@ -3239,13 +3239,6 @@ The following commands can be used in route maps:
    * ``replace``: Overwrites the existing BGP communities attribute entirely
                   with the communities defined in the community list.

-.. clicmd:: set extended-comm-list delete <EXTCOMMUNITY_LIST_NAME>
-
-   Remove extended communities from a route that match the specified
-   extcommunity-list. Both standard and expanded lists may be used. Only
-   ``permit`` entries in the list are removed. See
-   :ref:`bgp-extended-community-lists`.
-
 .. clicmd:: set large-comm-list delete <LCOMMUNITY_LIST_NAME>

    Set BGP large community list for deletion.
@@ -3508,6 +3501,7 @@ BGP Extended Communities in Route Map
    only match BGP updates with no extended community.

 .. clicmd:: set extended-comm-list delete <EXTCOMMUNITY_LIST_NAME>
+   :daemon: bgp

    Remove extended communities from the route that match ``permit`` entries in
    the named extcommunity-list. Both standard and expanded lists are
diff --git a/doc/user/conf.py b/doc/user/conf.py
index f9f178f5ff..b00c6b8eeb 100644
--- a/doc/user/conf.py
+++ b/doc/user/conf.py
@@ -145,6 +145,8 @@ exclude_patterns = [
     "flowspec.rst",
     "snmptrap.rst",
     "wecmp_linkbw.rst",
+    "bgp-linkstate.rst",
+    "unreachability.rst",
 ]

 # The reST default role (used for this markup: `text`) to use for all
diff --git a/doc/user/ospf6d.rst b/doc/user/ospf6d.rst
index 8f5454e88a..9965aeefd6 100644
--- a/doc/user/ospf6d.rst
+++ b/doc/user/ospf6d.rst
@@ -114,6 +114,7 @@ Configuration Commands
    is 20.

 .. clicmd:: shutdown
+   :daemon: ospf6d

    Disables the OSPF instance. This command is useful when it's desired
    to disable the OSPF instance while retaining its configuration,
diff --git a/doc/user/ospfd.rst b/doc/user/ospfd.rst
index ed3c8d26a2..1a97327902 100644
--- a/doc/user/ospfd.rst
+++ b/doc/user/ospfd.rst
@@ -352,6 +352,7 @@ To start OSPF process you have to specify the OSPF router.
    This feature is enabled by default.

 .. clicmd:: shutdown
+   :daemon: ospfd

    Disables the OSPF instance. This command is useful when it's desired
    to disable the OSPF instance while retaining its configuration,
diff --git a/doc/user/pim.rst b/doc/user/pim.rst
index c7cf95da43..1c3e1a8753 100644
--- a/doc/user/pim.rst
+++ b/doc/user/pim.rst
@@ -319,6 +319,7 @@ PIM Routers
    fallback to a second lookup.

 .. clicmd:: shutdown
+   :daemon: pim

    Disable the PIM instance while retaining all configuration and remove
    all state.
diff --git a/doc/user/pimv6.rst b/doc/user/pimv6.rst
index f8b1d3d599..7d22ec732e 100644
--- a/doc/user/pimv6.rst
+++ b/doc/user/pimv6.rst
@@ -159,12 +159,12 @@ PIMv6 Router
    convergence at scale. This command is not VRF-aware, using it in VRF
    context will actually assign to the default VRF instead.

-.. clicmd:: ip pim assert-interval (1000-86400000)
+.. clicmd:: ipv6 pim assert-interval (1000-86400000)

    Modify the PIM assert interval in milliseconds on this interface
    (defaults to 18000).

-.. clicmd:: ip pim assert-override-interval (1000-86400000)
+.. clicmd:: ipv6 pim assert-override-interval (1000-86400000)

    Modify the PIM assert override interval in milliseconds on this
    interface (defaults to 3000).
@@ -205,6 +205,7 @@ PIMv6 Router
    never do SM over. This command is VRF-aware.

 .. clicmd:: join-filter route-map RMAP_NAME
+   :daemon: pimv6

    Specify a route-map name to use for filtering incoming PIM joins.

@@ -229,6 +230,7 @@ PIMv6 Router
    well known SSM multicast group which ssmping just have joined.

 .. clicmd:: shutdown
+   :daemon: pimv6

    Disable the PIM instance while retaining all configuration and remove
    all state.