blob: a80eac0dbd7c0e8b2dd2235274ca3a2e7c0b84de [file] [log] [blame]
/*
* Copyright 2016-present Open Networking Foundation
*
* 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.isis.io.isispacket;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onlab.packet.MacAddress;
import org.onosproject.isis.controller.IsisMessage;
import org.onosproject.isis.controller.IsisPduType;
/**
* Representation of ISIS message header.
*/
public class IsisHeader implements IsisMessage {
private MacAddress sourceMac;
private int interfaceIndex;
private MacAddress interfaceMac;
private int isisPduType;
private byte irpDiscriminator;
private byte pduHeaderLength;
private byte version2;
private byte idLength;
private byte version;
private byte reserved;
private byte maximumAreaAddresses;
/**
* 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;
}
/**
* Returns the interface mac address on which the message received.
*
* @return interface mac address on which the message received
*/
public MacAddress interfaceMac() {
return interfaceMac;
}
/**
* Returns the mac address of the message sender.
*
* @return mac address of the message sender
*/
public MacAddress sourceMac() {
return sourceMac;
}
/**
* Sets the mac address of the message sender.
*
* @param sourceMac mac address of the message sender
*/
public void setSourceMac(MacAddress sourceMac) {
this.sourceMac = sourceMac;
}
/**
* Sets the interface mac address on which the message received.
*
* @param interfaceMac mac address on which the message received
*/
public void setInterfaceMac(MacAddress interfaceMac) {
this.interfaceMac = interfaceMac;
}
/**
* Returns the version of TLV header.
*
* @return version version of TLV header
*/
public byte version2() {
return version2;
}
/**
* Sets the version of TLV header.
*
* @param version2 version of TLV header
*/
public void setVersion2(byte version2) {
this.version2 = version2;
}
/**
* Returns maximum area address.
*
* @return maximum area address
*/
public byte maximumAreaAddresses() {
return maximumAreaAddresses;
}
/**
* Sets maximum area address.
*
* @param maximumAreaAddresses maximum area address
*/
public void setMaximumAreaAddresses(byte maximumAreaAddresses) {
this.maximumAreaAddresses = maximumAreaAddresses;
}
/**
* Returns reserved field value on which data received.
*
* @return reserved
*/
public byte reserved() {
return reserved;
}
/**
* Sets reserved.
*
* @param reserved reserved
*/
public void setReserved(byte reserved) {
this.reserved = reserved;
}
/**
* Returns version.
*
* @return version
*/
public byte version() {
return version;
}
/**
* Returns ID length.
*
* @return ID length
*/
public byte idLength() {
return idLength;
}
/**
* Sets ID length.
*
* @param idLength ID length
*/
public void setIdLength(byte idLength) {
this.idLength = idLength;
}
/**
* Returns the PDU type.
*
* @return PDU type
*/
public int pduType() {
return this.isisPduType;
}
/**
* Sets PDU type.
*
* @param isisPduType PDU type
*/
public void setIsisPduType(int isisPduType) {
this.isisPduType = isisPduType;
}
/**
* Sets protocol ID.
*
* @param version protocol ID
*/
public void setVersion(byte version) {
this.version = version;
}
/**
* Returns length indicator.
*
* @return length indicator
*/
public byte pduHeaderLength() {
return pduHeaderLength;
}
/**
* Sets length indicator.
*
* @param pduHeaderLength length indicator
*/
public void setPduHeaderLength(byte pduHeaderLength) {
this.pduHeaderLength = pduHeaderLength;
}
/**
* Returns IRP discriminator.
*
* @return IRP discriminator
*/
public byte irpDiscriminator() {
return irpDiscriminator;
}
/**
* Sets IRP discriminator.
*
* @param irpDiscriminator IRP discriminator
*/
public void setIrpDiscriminator(byte irpDiscriminator) {
this.irpDiscriminator = irpDiscriminator;
}
@Override
public IsisPduType isisPduType() {
return IsisPduType.get(this.isisPduType);
}
@Override
public void readFrom(ChannelBuffer channelBuffer) {
//implemented in the sub classes
}
@Override
public byte[] asBytes() {
return null;
}
/**
* Populates ISIS header.
*
* @param isisHeader ISIS header
*/
public void populateHeader(IsisHeader isisHeader) {
this.setIrpDiscriminator(isisHeader.irpDiscriminator());
this.setPduHeaderLength(isisHeader.pduHeaderLength());
this.setVersion(isisHeader.version());
this.setIdLength(isisHeader.idLength());
this.setIsisPduType(isisHeader.pduType());
this.setVersion2(isisHeader.version2());
this.setReserved(isisHeader.reserved());
this.setMaximumAreaAddresses(isisHeader.maximumAreaAddresses());
}
}