class BgpRoute {

  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (!(o instanceof BgpRoute)) {
      return false;
    }
    BgpRoute bgpRoute = (BgpRoute) o;
    return _localPreference == bgpRoute._localPreference
        && _metric == bgpRoute._metric
        && _weight == bgpRoute._weight
        && Objects.equals(_asPath, bgpRoute._asPath)
        && Objects.equals(_communities, bgpRoute._communities)
        && Objects.equals(_network, bgpRoute._network)
        && Objects.equals(_nextHopIp, bgpRoute._nextHopIp)
        && Objects.equals(_originatorIp, bgpRoute._originatorIp)
        && _originType == bgpRoute._originType
        && _protocol == bgpRoute._protocol
        && _srcProtocol == bgpRoute._srcProtocol;
  }

  private  BgpRoute(
      AsPath asPath,
      SortedSet<Community> communities,
      long localPreference,
      long metric,
      Prefix network,
      Ip nextHopIp,
      Ip originatorIp,
      OriginType originType,
      RoutingProtocol protocol,
      @Nullable RoutingProtocol srcProtocol,
      int weight);

}