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

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

import javax.validation.constraints.NotNull;
import java.util.Objects;

/**
 * FirewallSetting
 */
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2024-12-04T11:32:19.054+08:00[Asia/Shanghai]")

public class FirewallSetting   {
  @JsonProperty("icmp")
  private Integer icmp;

  @JsonProperty("other")
  private Integer other;

  @JsonProperty("tcpClose")
  private Integer tcpClose;

  @JsonProperty("tcpCloseWait")
  private Integer tcpCloseWait;

  @JsonProperty("tcpEstablished")
  private Integer tcpEstablished;

  @JsonProperty("tcpFinWait")
  private Integer tcpFinWait;

  @JsonProperty("tcpLastAck")
  private Integer tcpLastAck;

  @JsonProperty("tcpSynReceive")
  private Integer tcpSynReceive;

  @JsonProperty("tcpSynSent")
  private Integer tcpSynSent;

  @JsonProperty("tcpTimeWait")
  private Integer tcpTimeWait;

  @JsonProperty("udpOther")
  private Integer udpOther;

  @JsonProperty("udpStream")
  private Integer udpStream;

  @JsonProperty("broadcastPing")
  private Boolean broadcastPing;

  @JsonProperty("receiveRedirects")
  private Boolean receiveRedirects;

  @JsonProperty("sendRedirects")
  private Boolean sendRedirects;

  @JsonProperty("synCookies")
  private Boolean synCookies;

  public FirewallSetting icmp(Integer icmp) {
    this.icmp = icmp;
    return this;
  }

  /**
   * ICMP should be within the range of 1–21474836.
   * @return icmp
  */
  @ApiModelProperty(required = true, value = "ICMP should be within the range of 1–21474836.")
  @NotNull


  public Integer getIcmp() {
    return icmp;
  }

  public void setIcmp(Integer icmp) {
    this.icmp = icmp;
  }

  public FirewallSetting other(Integer other) {
    this.other = other;
    return this;
  }

  /**
   * Other should be within the range of 1–21474836.
   * @return other
  */
  @ApiModelProperty(required = true, value = "Other should be within the range of 1–21474836.")
  @NotNull


  public Integer getOther() {
    return other;
  }

  public void setOther(Integer other) {
    this.other = other;
  }

  public FirewallSetting tcpClose(Integer tcpClose) {
    this.tcpClose = tcpClose;
    return this;
  }

  /**
   * TCP close should be within the range of 1–21474836.
   * @return tcpClose
  */
  @ApiModelProperty(required = true, value = "TCP close should be within the range of 1–21474836.")
  @NotNull


  public Integer getTcpClose() {
    return tcpClose;
  }

  public void setTcpClose(Integer tcpClose) {
    this.tcpClose = tcpClose;
  }

  public FirewallSetting tcpCloseWait(Integer tcpCloseWait) {
    this.tcpCloseWait = tcpCloseWait;
    return this;
  }

  /**
   * TCP close wait should be within the range of 1–21474836.
   * @return tcpCloseWait
  */
  @ApiModelProperty(required = true, value = "TCP close wait should be within the range of 1–21474836.")
  @NotNull


  public Integer getTcpCloseWait() {
    return tcpCloseWait;
  }

  public void setTcpCloseWait(Integer tcpCloseWait) {
    this.tcpCloseWait = tcpCloseWait;
  }

  public FirewallSetting tcpEstablished(Integer tcpEstablished) {
    this.tcpEstablished = tcpEstablished;
    return this;
  }

  /**
   * TCP established should be within the range of 1–21474836.
   * @return tcpEstablished
  */
  @ApiModelProperty(required = true, value = "TCP established should be within the range of 1–21474836.")
  @NotNull


  public Integer getTcpEstablished() {
    return tcpEstablished;
  }

  public void setTcpEstablished(Integer tcpEstablished) {
    this.tcpEstablished = tcpEstablished;
  }

  public FirewallSetting tcpFinWait(Integer tcpFinWait) {
    this.tcpFinWait = tcpFinWait;
    return this;
  }

  /**
   * TCP FIN wait should be within the range of 1–21474836.
   * @return tcpFinWait
  */
  @ApiModelProperty(required = true, value = "TCP FIN wait should be within the range of 1–21474836.")
  @NotNull


  public Integer getTcpFinWait() {
    return tcpFinWait;
  }

  public void setTcpFinWait(Integer tcpFinWait) {
    this.tcpFinWait = tcpFinWait;
  }

  public FirewallSetting tcpLastAck(Integer tcpLastAck) {
    this.tcpLastAck = tcpLastAck;
    return this;
  }

  /**
   * TCP last ACK should be within the range of 1–21474836.
   * @return tcpLastAck
  */
  @ApiModelProperty(required = true, value = "TCP last ACK should be within the range of 1–21474836.")
  @NotNull


  public Integer getTcpLastAck() {
    return tcpLastAck;
  }

  public void setTcpLastAck(Integer tcpLastAck) {
    this.tcpLastAck = tcpLastAck;
  }

  public FirewallSetting tcpSynReceive(Integer tcpSynReceive) {
    this.tcpSynReceive = tcpSynReceive;
    return this;
  }

  /**
   * TCP SYN receive should be within the range of 1–21474836.
   * @return tcpSynReceive
  */
  @ApiModelProperty(required = true, value = "TCP SYN receive should be within the range of 1–21474836.")
  @NotNull


  public Integer getTcpSynReceive() {
    return tcpSynReceive;
  }

  public void setTcpSynReceive(Integer tcpSynReceive) {
    this.tcpSynReceive = tcpSynReceive;
  }

  public FirewallSetting tcpSynSent(Integer tcpSynSent) {
    this.tcpSynSent = tcpSynSent;
    return this;
  }

  /**
   * TCP SYN sent should be within the range of 1–21474836.
   * @return tcpSynSent
  */
  @ApiModelProperty(required = true, value = "TCP SYN sent should be within the range of 1–21474836.")
  @NotNull


  public Integer getTcpSynSent() {
    return tcpSynSent;
  }

  public void setTcpSynSent(Integer tcpSynSent) {
    this.tcpSynSent = tcpSynSent;
  }

  public FirewallSetting tcpTimeWait(Integer tcpTimeWait) {
    this.tcpTimeWait = tcpTimeWait;
    return this;
  }

  /**
   * TCP time wait should be within the range of 1–21474836.
   * @return tcpTimeWait
  */
  @ApiModelProperty(required = true, value = "TCP time wait should be within the range of 1–21474836.")
  @NotNull


  public Integer getTcpTimeWait() {
    return tcpTimeWait;
  }

  public void setTcpTimeWait(Integer tcpTimeWait) {
    this.tcpTimeWait = tcpTimeWait;
  }

  public FirewallSetting udpOther(Integer udpOther) {
    this.udpOther = udpOther;
    return this;
  }

  /**
   * UDP other should be within the range of 1–21474836.
   * @return udpOther
  */
  @ApiModelProperty(required = true, value = "UDP other should be within the range of 1–21474836.")
  @NotNull


  public Integer getUdpOther() {
    return udpOther;
  }

  public void setUdpOther(Integer udpOther) {
    this.udpOther = udpOther;
  }

  public FirewallSetting udpStream(Integer udpStream) {
    this.udpStream = udpStream;
    return this;
  }

  /**
   * UDP stream should be within the range of 1–21474836.
   * @return udpStream
  */
  @ApiModelProperty(required = true, value = "UDP stream should be within the range of 1–21474836.")
  @NotNull


  public Integer getUdpStream() {
    return udpStream;
  }

  public void setUdpStream(Integer udpStream) {
    this.udpStream = udpStream;
  }

  public FirewallSetting broadcastPing(Boolean broadcastPing) {
    this.broadcastPing = broadcastPing;
    return this;
  }

  /**
   * Broadcast ping of the firewall setting.
   * @return broadcastPing
  */
  @ApiModelProperty(required = true, value = "Broadcast ping of the firewall setting.")
  @NotNull


  public Boolean getBroadcastPing() {
    return broadcastPing;
  }

  public void setBroadcastPing(Boolean broadcastPing) {
    this.broadcastPing = broadcastPing;
  }

  public FirewallSetting receiveRedirects(Boolean receiveRedirects) {
    this.receiveRedirects = receiveRedirects;
    return this;
  }

  /**
   * Receive redirects of the firewall setting.
   * @return receiveRedirects
  */
  @ApiModelProperty(required = true, value = "Receive redirects of the firewall setting.")
  @NotNull


  public Boolean getReceiveRedirects() {
    return receiveRedirects;
  }

  public void setReceiveRedirects(Boolean receiveRedirects) {
    this.receiveRedirects = receiveRedirects;
  }

  public FirewallSetting sendRedirects(Boolean sendRedirects) {
    this.sendRedirects = sendRedirects;
    return this;
  }

  /**
   * Send redirects of the firewall setting.
   * @return sendRedirects
  */
  @ApiModelProperty(required = true, value = "Send redirects of the firewall setting.")
  @NotNull


  public Boolean getSendRedirects() {
    return sendRedirects;
  }

  public void setSendRedirects(Boolean sendRedirects) {
    this.sendRedirects = sendRedirects;
  }

  public FirewallSetting synCookies(Boolean synCookies) {
    this.synCookies = synCookies;
    return this;
  }

  /**
   * SYN Cookies of the firewall setting.
   * @return synCookies
  */
  @ApiModelProperty(required = true, value = "SYN Cookies of the firewall setting.")
  @NotNull


  public Boolean getSynCookies() {
    return synCookies;
  }

  public void setSynCookies(Boolean synCookies) {
    this.synCookies = synCookies;
  }


  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    FirewallSetting firewallSetting = (FirewallSetting) o;
    return Objects.equals(this.icmp, firewallSetting.icmp) &&
        Objects.equals(this.other, firewallSetting.other) &&
        Objects.equals(this.tcpClose, firewallSetting.tcpClose) &&
        Objects.equals(this.tcpCloseWait, firewallSetting.tcpCloseWait) &&
        Objects.equals(this.tcpEstablished, firewallSetting.tcpEstablished) &&
        Objects.equals(this.tcpFinWait, firewallSetting.tcpFinWait) &&
        Objects.equals(this.tcpLastAck, firewallSetting.tcpLastAck) &&
        Objects.equals(this.tcpSynReceive, firewallSetting.tcpSynReceive) &&
        Objects.equals(this.tcpSynSent, firewallSetting.tcpSynSent) &&
        Objects.equals(this.tcpTimeWait, firewallSetting.tcpTimeWait) &&
        Objects.equals(this.udpOther, firewallSetting.udpOther) &&
        Objects.equals(this.udpStream, firewallSetting.udpStream) &&
        Objects.equals(this.broadcastPing, firewallSetting.broadcastPing) &&
        Objects.equals(this.receiveRedirects, firewallSetting.receiveRedirects) &&
        Objects.equals(this.sendRedirects, firewallSetting.sendRedirects) &&
        Objects.equals(this.synCookies, firewallSetting.synCookies);
  }

  @Override
  public int hashCode() {
    return Objects.hash(icmp, other, tcpClose, tcpCloseWait, tcpEstablished, tcpFinWait, tcpLastAck, tcpSynReceive, tcpSynSent, tcpTimeWait, udpOther, udpStream, broadcastPing, receiveRedirects, sendRedirects, synCookies);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class FirewallSetting {\n");
    
    sb.append("    icmp: ").append(toIndentedString(icmp)).append("\n");
    sb.append("    other: ").append(toIndentedString(other)).append("\n");
    sb.append("    tcpClose: ").append(toIndentedString(tcpClose)).append("\n");
    sb.append("    tcpCloseWait: ").append(toIndentedString(tcpCloseWait)).append("\n");
    sb.append("    tcpEstablished: ").append(toIndentedString(tcpEstablished)).append("\n");
    sb.append("    tcpFinWait: ").append(toIndentedString(tcpFinWait)).append("\n");
    sb.append("    tcpLastAck: ").append(toIndentedString(tcpLastAck)).append("\n");
    sb.append("    tcpSynReceive: ").append(toIndentedString(tcpSynReceive)).append("\n");
    sb.append("    tcpSynSent: ").append(toIndentedString(tcpSynSent)).append("\n");
    sb.append("    tcpTimeWait: ").append(toIndentedString(tcpTimeWait)).append("\n");
    sb.append("    udpOther: ").append(toIndentedString(udpOther)).append("\n");
    sb.append("    udpStream: ").append(toIndentedString(udpStream)).append("\n");
    sb.append("    broadcastPing: ").append(toIndentedString(broadcastPing)).append("\n");
    sb.append("    receiveRedirects: ").append(toIndentedString(receiveRedirects)).append("\n");
    sb.append("    sendRedirects: ").append(toIndentedString(sendRedirects)).append("\n");
    sb.append("    synCookies: ").append(toIndentedString(synCookies)).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    ");
  }
}

