Merge branch 'ike-dscp'

This commit is contained in:
Martin Willi
2013-02-14 17:11:35 +01:00
27 changed files with 242 additions and 68 deletions
+19
View File
@@ -39,6 +39,11 @@ struct private_packet_t {
*/
host_t *destination;
/**
* DSCP value on packet
*/
u_int8_t dscp;
/**
* message data
*/
@@ -89,6 +94,17 @@ METHOD(packet_t, set_data, void,
this->adjusted_data = this->data = data;
}
METHOD(packet_t, get_dscp, u_int8_t,
private_packet_t *this)
{
return this->dscp;
}
METHOD(packet_t, set_dscp, void,
private_packet_t *this, u_int8_t value)
{
this->dscp = value;
}
METHOD(packet_t, skip_bytes, void,
private_packet_t *this, size_t bytes)
{
@@ -123,6 +139,7 @@ METHOD(packet_t, clone_, packet_t*,
{
other->set_data(other, chunk_clone(this->adjusted_data));
}
other->set_dscp(other, this->dscp);
return other;
}
@@ -141,6 +158,8 @@ packet_t *packet_create_from_data(host_t *src, host_t *dst, chunk_t data)
.get_source = _get_source,
.set_destination = _set_destination,
.get_destination = _get_destination,
.get_dscp = _get_dscp,
.set_dscp = _set_dscp,
.skip_bytes = _skip_bytes,
.clone = _clone_,
.destroy = _destroy,
+14
View File
@@ -75,6 +75,20 @@ struct packet_t {
*/
void (*set_data)(packet_t *packet, chunk_t data);
/**
* Get the DiffServ Code Point set on this packet.
*
* @return DSCP value
*/
u_int8_t (*get_dscp)(packet_t *this);
/**
* Set the DiffServ Code Point to use on this packet.
*
* @param value DSCP value
*/
void (*set_dscp)(packet_t *this, u_int8_t value);
/**
* Increase the offset where the actual packet data starts.
*
+2 -2
View File
@@ -88,7 +88,6 @@ static void set_netmask(struct ifreq *ifr, int family, u_int8_t netmask)
case AF_INET:
{
struct sockaddr_in *addr = (struct sockaddr_in*)&ifr->ifr_addr;
addr->sin_family = AF_INET;
target = (char*)&addr->sin_addr;
len = 4;
break;
@@ -96,7 +95,6 @@ static void set_netmask(struct ifreq *ifr, int family, u_int8_t netmask)
case AF_INET6:
{
struct sockaddr_in6 *addr = (struct sockaddr_in6*)&ifr->ifr_addr;
addr->sin6_family = AF_INET6;
target = (char*)&addr->sin6_addr;
len = 16;
break;
@@ -105,6 +103,8 @@ static void set_netmask(struct ifreq *ifr, int family, u_int8_t netmask)
return;
}
ifr->ifr_addr.sa_family = family;
bytes = (netmask + 7) / 8;
bits = (bytes * 8) - netmask;