blob: 45f22855a37055bdc68d8b35f6816db0285da4ce [file] [log] [blame]
/*
*
* * Copyright 2015 AT&T Foundry
* *
* * 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.onlab.packet;
import java.util.Arrays;
/**
* An attribute in a RADIUS packet.
*/
public class RADIUSAttribute {
protected byte type;
protected byte length;
protected byte[] value;
// RADIUS attribute types
public static final byte RADIUS_ATTR_USERNAME = 1;
public static final byte RADIUS_ATTR_NAS_IP = 4;
public static final byte RADIUS_ATTR_NAS_PORT = 5;
public static final byte RADIUS_ATTR_FRAMED_MTU = 12;
public static final byte RADIUS_ATTR_STATE = 24;
public static final byte RADIUS_ATTR_VENDOR_SPECIFIC = 26;
public static final byte RADIUS_ATTR_CALLING_STATION_ID = 31;
public static final byte RADIUS_ATTR_NAS_ID = 32;
public static final byte RADIUS_ATTR_ACCT_SESSION_ID = 44;
public static final byte RADIUS_ATTR_NAS_PORT_TYPE = 61;
public static final byte RADIUS_ATTR_EAP_MESSAGE = 79;
public static final byte RADIUS_ATTR_MESSAGE_AUTH = 80;
public static final byte RADIUS_ATTR_NAS_PORT_ID = 87;
/**
* Default constructor.
*/
public RADIUSAttribute() {
}
/**
* Constructs a RADIUS attribute with the give type, length and value.
*
* @param type type
* @param length length
* @param value value
*/
public RADIUSAttribute(final byte type, final byte length, final byte[] value) {
this.type = type;
this.length = length;
this.value = value;
}
/**
* Checks if the attribute type is valid.
*
* @return whether the type is valid or not
*/
public boolean isValidType() {
return this.type == RADIUS_ATTR_USERNAME ||
this.type == RADIUS_ATTR_NAS_IP ||
this.type == RADIUS_ATTR_NAS_PORT ||
this.type == RADIUS_ATTR_VENDOR_SPECIFIC ||
this.type == RADIUS_ATTR_CALLING_STATION_ID ||
this.type == RADIUS_ATTR_NAS_ID ||
this.type == RADIUS_ATTR_ACCT_SESSION_ID ||
this.type == RADIUS_ATTR_NAS_PORT_TYPE ||
this.type == RADIUS_ATTR_EAP_MESSAGE ||
this.type == RADIUS_ATTR_MESSAGE_AUTH ||
this.type == RADIUS_ATTR_NAS_PORT_ID;
}
/**
* Gets the attribute type.
*
* @return the type
*/
public byte getType() {
return this.type;
}
/**
* Sets the attribute type.
*
* @param type the code to set
* @return this
*/
public RADIUSAttribute setType(final byte type) {
this.type = type;
return this;
}
/**
* Gets the attribute length.
*
* @return the length
*/
public byte getLength() {
return this.length;
}
/**
* Sets the attribute length.
*
* @param length the length to set
* @return this
*/
public RADIUSAttribute setLength(final byte length) {
this.length = length;
return this;
}
/**
* Gets the attribute value.
*
* @return the value
*/
public byte[] getValue() {
return this.value;
}
/**
* Sets the attribute value.
*
* @param value the data to set
* @return this
*/
public RADIUSAttribute setValue(final byte[] value) {
this.value = value;
return this;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("[");
sb.append("type= ");
sb.append(type);
sb.append("length= ");
sb.append(length);
sb.append("value= ");
sb.append(Arrays.toString(value));
sb.append("]");
return sb.toString();
}
}