| /* |
| * Copyright 2016-present Open Networking Laboratory |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package org.onosproject.ospf.protocol.ospfpacket; |
| |
| import com.google.common.base.MoreObjects; |
| import org.jboss.netty.buffer.ChannelBuffer; |
| import org.onlab.packet.Ip4Address; |
| import org.onosproject.ospf.controller.OspfMessage; |
| import org.onosproject.ospf.controller.OspfPacketType; |
| import org.onosproject.ospf.exceptions.OspfParseException; |
| |
| /** |
| * Defines the OSPF Packet Header, fields and access methods. |
| * Every OSPF packet starts with a standard 24 byte header. |
| * This header contains all the information necessary to determine whether |
| * the packet should be accepted for further processing |
| */ |
| public class OspfPacketHeader implements OspfMessage { |
| |
| /* |
| 0 1 2 3 |
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 |
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| | Version # | Type | Packet length | |
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| | Router ID | |
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| | Area ID | |
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| | Checksum | AuType | |
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| | Authentication | |
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| | Authentication | |
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| */ |
| |
| private int ospfVer; |
| private int ospfType; |
| private int ospfPackLength; |
| private Ip4Address routerId; |
| private Ip4Address areaId; |
| private int checkSum; |
| private int auType; |
| private int authentication; |
| private Ip4Address destinationIp; |
| private Ip4Address sourceIp; |
| private int interfaceIndex; |
| |
| /** |
| * Gets the source IP. |
| * |
| * @return source IP address |
| */ |
| public Ip4Address sourceIp() { |
| return sourceIp; |
| } |
| |
| /** |
| * Sets the source IP address. |
| * |
| * @param sourceIp source IP address |
| */ |
| public void setSourceIp(Ip4Address sourceIp) { |
| this.sourceIp = sourceIp; |
| } |
| |
| @Override |
| public OspfPacketType ospfMessageType() { |
| //default impl |
| return null; |
| } |
| |
| @Override |
| public void readFrom(ChannelBuffer channelBuffer) throws OspfParseException { |
| //default impl |
| } |
| |
| @Override |
| public byte[] asBytes() { |
| //default impl |
| return new byte[0]; |
| } |
| |
| /** |
| * Gets OSPF version. |
| * |
| * @return OSPF version |
| */ |
| public int ospfVersion() { |
| return ospfVer; |
| } |
| |
| /** |
| * Sets OSPF version. |
| * |
| * @param ospfVer OSPF version |
| */ |
| public void setOspfVer(int ospfVer) { |
| this.ospfVer = ospfVer; |
| } |
| |
| /** |
| * Gets OSPF packet type. |
| * |
| * @return OSPF packet type |
| */ |
| public int ospfType() { |
| return ospfType; |
| } |
| |
| /** |
| * Sets OSPF packet type. |
| * |
| * @param ospfType packet type |
| */ |
| public void setOspftype(int ospfType) { |
| this.ospfType = ospfType; |
| } |
| |
| /** |
| * Gets ospf packet length. |
| * |
| * @return OSPF packet length |
| */ |
| public int ospfPacLength() { |
| return ospfPackLength; |
| } |
| |
| /** |
| * Sets OSPF packet length. |
| * |
| * @param ospfPacLength packet length |
| */ |
| public void setOspfPacLength(int ospfPacLength) { |
| this.ospfPackLength = ospfPacLength; |
| } |
| |
| /** |
| * Gets router id. |
| * |
| * @return routerId |
| */ |
| public Ip4Address routerId() { |
| return routerId; |
| } |
| |
| /** |
| * Sets router id. |
| * |
| * @param routerId router id |
| */ |
| public void setRouterId(Ip4Address routerId) { |
| this.routerId = routerId; |
| } |
| |
| /** |
| * Gets area id. |
| * |
| * @return areaId area id |
| */ |
| public Ip4Address areaId() { |
| return areaId; |
| } |
| |
| /** |
| * Sets area id. |
| * |
| * @param areaId area id |
| */ |
| public void setAreaId(Ip4Address areaId) { |
| this.areaId = areaId; |
| } |
| |
| /** |
| * Gets checksum value. |
| * |
| * @return checkSum check sum value |
| */ |
| public int checksum() { |
| return checkSum; |
| } |
| |
| /** |
| * Sets checksum. |
| * |
| * @param checkSum check sum value |
| */ |
| public void setChecksum(int checkSum) { |
| this.checkSum = checkSum; |
| } |
| |
| /** |
| * Gets auth type. |
| * |
| * @return authType authentication type |
| */ |
| public int authType() { |
| return auType; |
| } |
| |
| /** |
| * Sets auth Type. |
| * |
| * @param auType authentication type |
| */ |
| public void setAuthType(int auType) { |
| this.auType = auType; |
| } |
| |
| /** |
| * Gets authentication. |
| * |
| * @return authentication |
| */ |
| public int authentication() { |
| return authentication; |
| } |
| |
| /** |
| * Sets authentication. |
| * |
| * @param authentication authentication |
| */ |
| public void setAuthentication(int authentication) { |
| this.authentication = authentication; |
| } |
| |
| /** |
| * Gets destination IP. |
| * |
| * @return destination IP |
| */ |
| public Ip4Address destinationIp() { |
| return destinationIp; |
| } |
| |
| /** |
| * Sets destination IP. |
| * |
| * @param destinationIp destination IP |
| */ |
| public void setDestinationIp(Ip4Address destinationIp) { |
| this.destinationIp = destinationIp; |
| } |
| |
| /** |
| * Returns the interface index on which the message received. |
| * |
| * @return interface index on which the message received |
| */ |
| public int interfaceIndex() { |
| return interfaceIndex; |
| } |
| |
| /** |
| * Sets the interface index on which the message received. |
| * |
| * @param interfaceIndex interface index on which the message received |
| */ |
| public void setInterfaceIndex(int interfaceIndex) { |
| this.interfaceIndex = interfaceIndex; |
| } |
| |
| /** |
| * Populates the header from the packetHeader instance. |
| * |
| * @param ospfPacketHeader packet header instance. |
| */ |
| public void populateHeader(OspfPacketHeader ospfPacketHeader) { |
| this.setInterfaceIndex(ospfPacketHeader.interfaceIndex()); |
| this.setSourceIp(ospfPacketHeader.sourceIp()); |
| this.setOspfVer(ospfPacketHeader.ospfVersion()); |
| this.setOspftype(ospfPacketHeader.ospfType()); |
| this.setOspfPacLength(ospfPacketHeader.ospfPacLength()); |
| this.setRouterId(ospfPacketHeader.routerId()); |
| this.setAreaId(ospfPacketHeader.areaId()); |
| this.setChecksum(ospfPacketHeader.checksum()); |
| this.setAuthType(ospfPacketHeader.authType()); |
| this.setAuthentication(ospfPacketHeader.authentication()); |
| } |
| |
| @Override |
| public String toString() { |
| return MoreObjects.toStringHelper(getClass()) |
| .omitNullValues() |
| .add("ospfVersion", ospfVer) |
| .add("ospfType", ospfType) |
| .add("ospfPackLength", ospfPackLength) |
| .add("routerId", routerId) |
| .add("areaId", areaId) |
| .add("checkSum", checkSum) |
| .add("auType", auType) |
| .add("authentication", authentication) |
| .add("destinationIP", destinationIp) |
| .toString(); |
| } |
| } |