package org.wfc.omada.api.sitesetting.model;

import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.util.Objects;

/**
 * Lan network proto: SLAAC+Stateless DHCP mode or SLAAC+RDNSS mode
 */
@ApiModel(description = "Lan network proto: SLAAC+Stateless DHCP mode or SLAAC+RDNSS mode")
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2024-12-04T11:32:19.054+08:00[Asia/Shanghai]")

public class LanNetworkProtoSlaacStatelessDhcpModeOrSlaacRdnssMode   {
  @JsonProperty("preType")
  private Integer preType;

  @JsonProperty("prefix")
  private String prefix;

  @JsonProperty("portUuid")
  private String portUuid;

  @JsonProperty("preId")
  private Integer preId;

  @JsonProperty("dnsv6")
  private Integer dnsv6;

  @JsonProperty("priDns")
  private String priDns;

  @JsonProperty("sndDns")
  private String sndDns;

  public LanNetworkProtoSlaacStatelessDhcpModeOrSlaacRdnssMode preType(Integer preType) {
    this.preType = preType;
    return this;
  }

  /**
   * Prefix type should be a value as follows:  0: \"manual\"; 1: \"get from PD\"
   * @return preType
  */
  @ApiModelProperty(value = "Prefix type should be a value as follows:  0: \"manual\"; 1: \"get from PD\"")


  public Integer getPreType() {
    return preType;
  }

  public void setPreType(Integer preType) {
    this.preType = preType;
  }

  public LanNetworkProtoSlaacStatelessDhcpModeOrSlaacRdnssMode prefix(String prefix) {
    this.prefix = prefix;
    return this;
  }

  /**
   * Address prefix
   * @return prefix
  */
  @ApiModelProperty(value = "Address prefix")


  public String getPrefix() {
    return prefix;
  }

  public void setPrefix(String prefix) {
    this.prefix = prefix;
  }

  public LanNetworkProtoSlaacStatelessDhcpModeOrSlaacRdnssMode portUuid(String portUuid) {
    this.portUuid = portUuid;
    return this;
  }

  /**
   * The port UUID of WAN
   * @return portUuid
  */
  @ApiModelProperty(value = "The port UUID of WAN")


  public String getPortUuid() {
    return portUuid;
  }

  public void setPortUuid(String portUuid) {
    this.portUuid = portUuid;
  }

  public LanNetworkProtoSlaacStatelessDhcpModeOrSlaacRdnssMode preId(Integer preId) {
    this.preId = preId;
    return this;
  }

  /**
   * Prefix ID should be within the range of 0-127
   * @return preId
  */
  @ApiModelProperty(value = "Prefix ID should be within the range of 0-127")


  public Integer getPreId() {
    return preId;
  }

  public void setPreId(Integer preId) {
    this.preId = preId;
  }

  public LanNetworkProtoSlaacStatelessDhcpModeOrSlaacRdnssMode dnsv6(Integer dnsv6) {
    this.dnsv6 = dnsv6;
    return this;
  }

  /**
   * DHCP Name Server, should be a value as follows: 0: \"auto\"; 1: \"manual\"
   * @return dnsv6
  */
  @ApiModelProperty(value = "DHCP Name Server, should be a value as follows: 0: \"auto\"; 1: \"manual\"")


  public Integer getDnsv6() {
    return dnsv6;
  }

  public void setDnsv6(Integer dnsv6) {
    this.dnsv6 = dnsv6;
  }

  public LanNetworkProtoSlaacStatelessDhcpModeOrSlaacRdnssMode priDns(String priDns) {
    this.priDns = priDns;
    return this;
  }

  /**
   * Primary DHCP Name Server, only effective for DNSv6 \"manual\"
   * @return priDns
  */
  @ApiModelProperty(value = "Primary DHCP Name Server, only effective for DNSv6 \"manual\"")


  public String getPriDns() {
    return priDns;
  }

  public void setPriDns(String priDns) {
    this.priDns = priDns;
  }

  public LanNetworkProtoSlaacStatelessDhcpModeOrSlaacRdnssMode sndDns(String sndDns) {
    this.sndDns = sndDns;
    return this;
  }

  /**
   * Secondary DHCP Name Server, only effective for dnsv6 \"manual\"
   * @return sndDns
  */
  @ApiModelProperty(value = "Secondary DHCP Name Server, only effective for dnsv6 \"manual\"")


  public String getSndDns() {
    return sndDns;
  }

  public void setSndDns(String sndDns) {
    this.sndDns = sndDns;
  }


  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    LanNetworkProtoSlaacStatelessDhcpModeOrSlaacRdnssMode lanNetworkProtoSlaacStatelessDhcpModeOrSlaacRdnssMode = (LanNetworkProtoSlaacStatelessDhcpModeOrSlaacRdnssMode) o;
    return Objects.equals(this.preType, lanNetworkProtoSlaacStatelessDhcpModeOrSlaacRdnssMode.preType) &&
        Objects.equals(this.prefix, lanNetworkProtoSlaacStatelessDhcpModeOrSlaacRdnssMode.prefix) &&
        Objects.equals(this.portUuid, lanNetworkProtoSlaacStatelessDhcpModeOrSlaacRdnssMode.portUuid) &&
        Objects.equals(this.preId, lanNetworkProtoSlaacStatelessDhcpModeOrSlaacRdnssMode.preId) &&
        Objects.equals(this.dnsv6, lanNetworkProtoSlaacStatelessDhcpModeOrSlaacRdnssMode.dnsv6) &&
        Objects.equals(this.priDns, lanNetworkProtoSlaacStatelessDhcpModeOrSlaacRdnssMode.priDns) &&
        Objects.equals(this.sndDns, lanNetworkProtoSlaacStatelessDhcpModeOrSlaacRdnssMode.sndDns);
  }

  @Override
  public int hashCode() {
    return Objects.hash(preType, prefix, portUuid, preId, dnsv6, priDns, sndDns);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class LanNetworkProtoSlaacStatelessDhcpModeOrSlaacRdnssMode {\n");
    
    sb.append("    preType: ").append(toIndentedString(preType)).append("\n");
    sb.append("    prefix: ").append(toIndentedString(prefix)).append("\n");
    sb.append("    portUuid: ").append(toIndentedString(portUuid)).append("\n");
    sb.append("    preId: ").append(toIndentedString(preId)).append("\n");
    sb.append("    dnsv6: ").append(toIndentedString(dnsv6)).append("\n");
    sb.append("    priDns: ").append(toIndentedString(priDns)).append("\n");
    sb.append("    sndDns: ").append(toIndentedString(sndDns)).append("\n");
    sb.append("}");
    return sb.toString();
  }

  /**
   * Convert the given object to string with each line indented by 4 spaces
   * (except the first line).
   */
  private String toIndentedString(Object o) {
    if (o == null) {
      return "null";
    }
    return o.toString().replace("\n", "\n    ");
  }
}

