docs: def config(group=None, neighbor=None, **kwargs):
  
      '''
      Provides the BGP configuration on the device.
  
      :param group: Name of the group selected to display the configuration.
      :param neighbor: IP Address of the neighbor to display the configuration.
          If the group parameter is not specified, the neighbor setting will be
          ignored.
  
      :return: A dictionary containing the BGP configuration from the network
          device. The keys of the main dictionary are the group names.
  
      Each group has the following properties:
  
          * type (string)
          * description (string)
          * apply_groups (string list)
          * multihop_ttl (int)
          * multipath (True/False)
          * local_address (string)
          * local_as (int)
          * remote_as (int)
          * import_policy (string)
          * export_policy (string)
          * remove_private_as (True/False)
          * prefix_limit (dictionary)
          * neighbors (dictionary)
  
      Each neighbor in the dictionary of neighbors provides:
  
          * description (string)
          * import_policy (string)
          * export_policy (string)
          * local_address (string)
          * local_as (int)
          * remote_as (int)
          * authentication_key (string)
          * prefix_limit (dictionary)
          * route_reflector_client (True/False)
          * nhs (True/False)
  
      CLI Example:
  
      .. code-block:: bash
  
          salt '*' bgp.config # entire BGP config
          salt '*' bgp.config PEERS-GROUP-NAME # provides detail only about BGP group PEERS-GROUP-NAME
          salt '*' bgp.config PEERS-GROUP-NAME 172.17.17.1 # provides details only about BGP neighbor 172.17.17.1,
          # configured in the group PEERS-GROUP-NAME
  
      Output Example:
  
      .. code-block:: python
  
          {
              'PEERS-GROUP-NAME':{
                  'type'          : 'external',
                  'description'   : 'Here we should have a nice description',
                  'apply_groups'  : ['BGP-PREFIX-LIMIT'],
                  'import_policy' : 'PUBLIC-PEER-IN',
                  'export_policy' : 'PUBLIC-PEER-OUT',
                  'remove_private': True,
                  'multipath'     : True,
                  'multihop_ttl'  : 30,
                  'neighbors'     : {
                      '192.168.0.1': {
                          'description'   : 'Facebook [CDN]',
                          'prefix_limit'  : {
                              'inet': {
                                  'unicast': {
                                      'limit': 100,
                                      'teardown': {
                                          'threshold' : 95,
                                          'timeout'   : 5
                                      }
                                  }
                              }
                          }
                          'peer-as'        : 32934,
                          'route_reflector': False,
                          'nhs'            : True
                      },
                      '172.17.17.1': {
                          'description'   : 'Twitter [CDN]',
                          'prefix_limit'  : {
                              'inet': {
                                  'unicast': {
                                      'limit': 500,
                                      'no-validate': 'IMPORT-FLOW-ROUTES'
                                  }
                              }
                          }
                          'peer_as'        : 13414
                          'route_reflector': False,
                          'nhs'            : False
                      }
                  }
              }
          }
      '''
  
      return salt.utils.napalm.call(
          napalm_device,  # pylint: disable=undefined-variable
          'get_bgp_config',
          **{
              'group': group,
              'neighbor': neighbor
          }
      )