diff --git a/include/osmocom/vty/command.h b/include/osmocom/vty/command.h
index 62989c1..9a072d7 100644
--- a/include/osmocom/vty/command.h
+++ b/include/osmocom/vty/command.h
@@ -31,97 +31,97 @@
  */
 /*! \file command.h */
 
-/*! \brief Host configuration variable */
+/*! Host configuration variable */
 struct host {
-	/*! \brief Host name of this router. */
+	/*! Host name of this router. */
 	char *name;
 
-	/*! \brief Password for vty interface. */
+	/*! Password for vty interface. */
 	char *password;
 	char *password_encrypt;
 
-	/*! \brief Enable password */
+	/*! Enable password */
 	char *enable;
 	char *enable_encrypt;
 
-	/*! \brief System wide terminal lines. */
+	/*! System wide terminal lines. */
 	int lines;
 
-	/*! \brief Log filename. */
+	/*! Log filename. */
 	char *logfile;
 
-	/*! \brief config file name of this host */
+	/*! config file name of this host */
 	char *config;
 
-	/*! \brief Flags for services */
+	/*! Flags for services */
 	int advanced;
 	int encrypt;
 
-	/*! \brief Banner configuration. */
+	/*! Banner configuration. */
 	const char *motd;
 	char *motdfile;
 
-	/*! \brief VTY application information */
+	/*! VTY application information */
 	const struct vty_app_info *app_info;
 };
 
-/*! \brief There are some command levels which called from command node. */
+/*! There are some command levels which called from command node. */
 enum node_type {
-	AUTH_NODE,		/*!< \brief Authentication mode of vty interface. */
-	VIEW_NODE,		/*!< \brief View node. Default mode of vty interface. */
-	AUTH_ENABLE_NODE,	/*!< \brief Authentication mode for change enable. */
-	ENABLE_NODE,		/*!< \brief Enable node. */
-	CONFIG_NODE,		/*!< \brief Config node. Default mode of config file. */
-	SERVICE_NODE,		/*!< \brief Service node. */
-	DEBUG_NODE,		/*!< \brief Debug node. */
-	CFG_LOG_NODE,		/*!< \brief Configure the logging */
-	CFG_STATS_NODE,		/*!< \brief Configure the statistics */
+	AUTH_NODE,		/*!< Authentication mode of vty interface. */
+	VIEW_NODE,		/*!< View node. Default mode of vty interface. */
+	AUTH_ENABLE_NODE,	/*!< Authentication mode for change enable. */
+	ENABLE_NODE,		/*!< Enable node. */
+	CONFIG_NODE,		/*!< Config node. Default mode of config file. */
+	SERVICE_NODE,		/*!< Service node. */
+	DEBUG_NODE,		/*!< Debug node. */
+	CFG_LOG_NODE,		/*!< Configure the logging */
+	CFG_STATS_NODE,		/*!< Configure the statistics */
 
-	VTY_NODE,		/*!< \brief Vty node. */
+	VTY_NODE,		/*!< Vty node. */
 
-	L_E1INP_NODE,		/*!< \brief E1 line in libosmo-abis. */
-	L_IPA_NODE,		/*!< \brief IPA proxying commands in libosmo-abis. */
-	L_NS_NODE,		/*!< \brief NS node in libosmo-gb. */
-	L_BSSGP_NODE,		/*!< \brief BSSGP node in libosmo-gb. */
-	L_CTRL_NODE,		/*!< \brief Control interface node. */
+	L_E1INP_NODE,		/*!< E1 line in libosmo-abis. */
+	L_IPA_NODE,		/*!< IPA proxying commands in libosmo-abis. */
+	L_NS_NODE,		/*!< NS node in libosmo-gb. */
+	L_BSSGP_NODE,		/*!< BSSGP node in libosmo-gb. */
+	L_CTRL_NODE,		/*!< Control interface node. */
 
-	L_CS7_NODE,		/*!< \brief SS7 root node */
-	L_CS7_AS_NODE,		/*!< \brief SS7 Application Server */
-	L_CS7_ASP_NODE,		/*!< \brief SS7 Application Server Process */
-	L_CS7_XUA_NODE,		/*!< \brief SS7 xUA Listener */
-	L_CS7_RTABLE_NODE,	/*!< \brief SS7 Routing Table */
-	L_CS7_LINK_NODE,	/*!< \brief SS7 Link */
-	L_CS7_LINKSET_NODE,	/*!< \brief SS7 Linkset */
-	L_CS7_SCCPADDR_NODE,	/*!< \brief SS7 SCCP Address */
-	L_CS7_SCCPADDR_GT_NODE,	/*!< \brief SS7 SCCP Global Title */
+	L_CS7_NODE,		/*!< SS7 root node */
+	L_CS7_AS_NODE,		/*!< SS7 Application Server */
+	L_CS7_ASP_NODE,		/*!< SS7 Application Server Process */
+	L_CS7_XUA_NODE,		/*!< SS7 xUA Listener */
+	L_CS7_RTABLE_NODE,	/*!< SS7 Routing Table */
+	L_CS7_LINK_NODE,	/*!< SS7 Link */
+	L_CS7_LINKSET_NODE,	/*!< SS7 Linkset */
+	L_CS7_SCCPADDR_NODE,	/*!< SS7 SCCP Address */
+	L_CS7_SCCPADDR_GT_NODE,	/*!< SS7 SCCP Global Title */
 
 	/*
 	 * When adding new nodes to the libosmocore project, these nodes can be
 	 * used to avoid ABI changes for unrelated projects.
 	 */
-	RESERVED3_NODE,		/*!< \brief Reserved for later extensions */
+	RESERVED3_NODE,		/*!< Reserved for later extensions */
 
 	_LAST_OSMOVTY_NODE
 };
 
 #include "vty.h"
 
-/*! \brief Node which has some commands and prompt string and
+/*! Node which has some commands and prompt string and
  * configuration function pointer . */
 struct cmd_node {
-	/*! \brief Node index */
+	/*! Node index */
 	int node;
 
-	/*! \brief Prompt character at vty interface. */
+	/*! Prompt character at vty interface. */
 	const char *prompt;
 
-	/*! \brief Is this node's configuration goes to vtysh ? */
+	/*! Is this node's configuration goes to vtysh ? */
 	int vtysh;
 
-	/*! \brief Node's configuration write function */
+	/*! Node's configuration write function */
 	int (*func) (struct vty *);
 
-	/*! \brief Vector of this node's command list. */
+	/*! Vector of this node's command list. */
 	vector cmd_vector;
 };
 
@@ -130,26 +130,26 @@
 	CMD_ATTR_HIDDEN,
 };
 
-/*! \brief Structure of a command element */
+/*! Structure of a command element */
 struct cmd_element {
-	const char *string;	/*!< \brief Command specification by string. */
+	const char *string;	/*!< Command specification by string. */
 	int (*func) (struct cmd_element *, struct vty *, int, const char *[]);
-	const char *doc;	/*!< \brief Documentation of this command. */
-	int daemon;		/*!< \brief Daemon to which this command belong. */
-	vector strvec;		/*!< \brief Pointing out each description vector. */
-	unsigned int cmdsize;	/*!< \brief Command index count. */
-	char *config;		/*!< \brief Configuration string */
-	vector subconfig;	/*!< \brief Sub configuration string */
-	unsigned char attr;	/*!< \brief Command attributes */
+	const char *doc;	/*!< Documentation of this command. */
+	int daemon;		/*!< Daemon to which this command belong. */
+	vector strvec;		/*!< Pointing out each description vector. */
+	unsigned int cmdsize;	/*!< Command index count. */
+	char *config;		/*!< Configuration string */
+	vector subconfig;	/*!< Sub configuration string */
+	unsigned char attr;	/*!< Command attributes */
 };
 
-/*! \brief Command description structure. */
+/*! Command description structure. */
 struct desc {
-	const char *cmd;	/*!< \brief Command string. */
-	const char *str;	/*!< \brief Command's description. */
+	const char *cmd;	/*!< Command string. */
+	const char *str;	/*!< Command's description. */
 };
 
-/*! \brief Return value of the commands. */
+/*! Return value of the commands. */
 #define CMD_SUCCESS              0
 #define CMD_WARNING              1
 #define CMD_ERR_NO_MATCH         2
@@ -197,7 +197,7 @@
   static int funcname \
     (struct cmd_element *self, struct vty *vty, int argc, const char *argv[])
 
-/*! \brief Macro for defining a VTY node and function
+/*! Macro for defining a VTY node and function
  *  \param[in] funcname Name of the function implementing the node
  *  \param[in] cmdname Name of the command node
  *  \param[in] cmdstr String with syntax of node
@@ -208,7 +208,7 @@
   DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, 0, 0) \
   DEFUN_CMD_FUNC_TEXT(funcname)
 
-/*! \brief Macro for defining a non-static (global) VTY node and function
+/*! Macro for defining a non-static (global) VTY node and function
  *  \param[in] funcname Name of the function implementing the node
  *  \param[in] cmdname Name of the command node
  *  \param[in] cmdstr String with syntax of node
