Type: fix
The code for quota exceeded events is a u32 and was being copied
into ipfix packets in host byte order. Same for the limit field.
Swap the order before copying into packet buffer.
This change was applied once before but had to be reverted. This was
because between the time the change was uploaded/reviewed and the
time it was merged, a different patch was merged which activated a
NAT ipfix unit test that had formerly only been run as part of the
extended tests. The test was expecting the values to be in host byte
order so it failed with this patch applied. This time around, that
test has also been updated to expect network byte order.
Change-Id: If5413b1f806d664f6786e56ba13c3eee573c26d2
Signed-off-by: Matthew Smith <mgsmith@netgate.com>
vlib_main_t *vm = vlib_get_main ();
u64 now;
u8 nat_event = QUOTA_EXCEEDED;
vlib_main_t *vm = vlib_get_main ();
u64 now;
u8 nat_event = QUOTA_EXCEEDED;
- u32 quota_event = MAX_ENTRIES_PER_USER;
+ u32 quota_event = clib_host_to_net_u32 (MAX_ENTRIES_PER_USER);
u16 template_id;
now = (u64) ((vlib_time_now (vm) - silm->vlib_time_0) * 1e3);
u16 template_id;
now = (u64) ((vlib_time_now (vm) - silm->vlib_time_0) * 1e3);
clib_memcpy_fast (b0->data + offset, "a_event, sizeof (quota_event));
offset += sizeof (quota_event);
clib_memcpy_fast (b0->data + offset, "a_event, sizeof (quota_event));
offset += sizeof (quota_event);
+ limit = clib_host_to_net_u32 (limit);
clib_memcpy_fast (b0->data + offset, &limit, sizeof (limit));
offset += sizeof (limit);
clib_memcpy_fast (b0->data + offset, &limit, sizeof (limit));
offset += sizeof (limit);
vlib_main_t *vm = vlib_get_main ();
u64 now;
u8 nat_event = QUOTA_EXCEEDED;
vlib_main_t *vm = vlib_get_main ();
u64 now;
u8 nat_event = QUOTA_EXCEEDED;
- u32 quota_event = MAX_SESSION_ENTRIES;
+ u32 quota_event = clib_host_to_net_u32 (MAX_SESSION_ENTRIES);
u16 template_id;
now = (u64) ((vlib_time_now (vm) - silm->vlib_time_0) * 1e3);
u16 template_id;
now = (u64) ((vlib_time_now (vm) - silm->vlib_time_0) * 1e3);
clib_memcpy_fast (b0->data + offset, "a_event, sizeof (quota_event));
offset += sizeof (quota_event);
clib_memcpy_fast (b0->data + offset, "a_event, sizeof (quota_event));
offset += sizeof (quota_event);
+ limit = clib_host_to_net_u32 (limit);
clib_memcpy_fast (b0->data + offset, &limit, sizeof (limit));
offset += sizeof (limit);
clib_memcpy_fast (b0->data + offset, &limit, sizeof (limit));
offset += sizeof (limit);
vlib_main_t *vm = vlib_get_main ();
u64 now;
u8 nat_event = QUOTA_EXCEEDED;
vlib_main_t *vm = vlib_get_main ();
u64 now;
u8 nat_event = QUOTA_EXCEEDED;
- u32 quota_event = MAX_BIB_ENTRIES;
+ u32 quota_event = clib_host_to_net_u32 (MAX_BIB_ENTRIES);
u16 template_id;
now = (u64) ((vlib_time_now (vm) - silm->vlib_time_0) * 1e3);
u16 template_id;
now = (u64) ((vlib_time_now (vm) - silm->vlib_time_0) * 1e3);
clib_memcpy_fast (b0->data + offset, "a_event, sizeof (quota_event));
offset += sizeof (quota_event);
clib_memcpy_fast (b0->data + offset, "a_event, sizeof (quota_event));
offset += sizeof (quota_event);
+ limit = clib_host_to_net_u32 (limit);
clib_memcpy_fast (b0->data + offset, &limit, sizeof (limit));
offset += sizeof (limit);
clib_memcpy_fast (b0->data + offset, &limit, sizeof (limit));
offset += sizeof (limit);
* limitations under the License.
*/
* limitations under the License.
*/
-option version = "5.2.0";
+option version = "5.3.0";
import "vnet/ip/ip_types.api";
import "vnet/interface_types.api";
import "plugins/nat/lib/nat_types.api";
import "vnet/ip/ip_types.api";
import "vnet/interface_types.api";
import "plugins/nat/lib/nat_types.api";
* limitations under the License.
*/
* limitations under the License.
*/
-option version = "1.0.0";
+option version = "1.1.0";
import "vnet/ip/ip_types.api";
import "vnet/interface_types.api";
import "plugins/nat/lib/nat_types.api";
import "vnet/ip/ip_types.api";
import "vnet/interface_types.api";
import "plugins/nat/lib/nat_types.api";
# natEvent
self.assertEqual(scapy.compat.orb(record[230]), 13)
# natQuotaExceededEvent
# natEvent
self.assertEqual(scapy.compat.orb(record[230]), 13)
# natQuotaExceededEvent
- self.assertEqual(struct.pack("I", 1), record[466])
+ self.assertEqual(struct.pack("!I", 1), record[466])
- self.assertEqual(struct.pack("I", limit), record[471])
+ self.assertEqual(struct.pack("!I", limit), record[471])
def verify_no_nat44_user(self):
""" Verify that there is no NAT44EI user """
def verify_no_nat44_user(self):
""" Verify that there is no NAT44EI user """