code: def prefix_add(self, prefix, next_hop=None, route_dist=None):
          
          func_name = 'network.add'
          networks = {
              PREFIX: prefix,
          }
          if next_hop:
              networks[NEXT_HOP] = next_hop
          if route_dist:
              func_name = 'prefix.add_local'
              networks[ROUTE_DISTINGUISHER] = route_dist
  
              rf, p = self._check_rf_and_normalize(prefix)
              networks[ROUTE_FAMILY] = rf
              networks[PREFIX] = p
  
              if rf == vrfs.VRF_RF_IPV6 and ip.valid_ipv4(next_hop):
                  # convert the next_hop to IPv4-Mapped IPv6 Address
                  networks[NEXT_HOP] = \
                      str(netaddr.IPAddress(next_hop).ipv6())
  
          return call(func_name, **networks)
docs: This method adds a new prefix to be advertised.
  
          ``prefix`` must be the string representation of an IP network
          (e.g., 10.1.1.0/24).
  
          ``next_hop`` specifies the next hop address for this
          prefix. This parameter is necessary for only VPNv4 and VPNv6
          address families.
  
          ``route_dist`` specifies a route distinguisher value. This
          parameter is necessary for only VPNv4 and VPNv6 address
          families.