From cbcaa6a7c8f8a6704f6b4a68f260020957214a07 Mon Sep 17 00:00:00 2001
From: Linus Nordberg <linus@nordu.net>
Date: Mon, 7 Mar 2011 15:23:40 +0100
Subject: Move verification of response packets up to a level where it makes
 sense.

Replace the user_dispatch_flag on connections with
conn_user_dispatch_p().

Remove the 'original' member from packet and instead have an upper
layer verify.

Rename packet valid_flag --> received_flag to reflect that we don't
verify.

Move _close_conn() --> conn_close().

Move packet flags into a single unsigned int, for portability.

(_read_packet): Don't verify packet.

(rs_conn_receive_packet): Don't touch PKT_OUT if there isn't a packet.

(rs_conn_receive_packet): Verify packet using packet_verify_response().
---
 lib/include/radsec/radsec-impl.h | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

(limited to 'lib/include/radsec')

diff --git a/lib/include/radsec/radsec-impl.h b/lib/include/radsec/radsec-impl.h
index f8904ac..e790ccf 100644
--- a/lib/include/radsec/radsec-impl.h
+++ b/lib/include/radsec/radsec-impl.h
@@ -81,7 +81,6 @@ struct rs_connection {
     int fd;			/* Socket.  */
     int tryagain;		/* For server failover.  */
     int nextid;			/* Next RADIUS packet identifier.  */
-    int user_dispatch_flag : 1;	/* User does the dispatching.  */
     /* TCP transport specifics.  */
     struct bufferevent *bev;	/* Buffer event.  */
     /* UDP transport specifics.  */
@@ -95,14 +94,17 @@ struct rs_connection {
 #endif
 };
 
+enum rs_packet_flags {
+    rs_packet_hdr_read_flag,
+    rs_packet_received_flag,
+    rs_packet_sent_flag,
+};
+
 struct rs_packet {
     struct rs_connection *conn;
-    char hdr_read_flag;
-    uint8_t hdr[4];
+    unsigned int flags;
+    uint8_t hdr[RS_HEADER_LEN];
     RADIUS_PACKET *rpkt;
-    struct rs_packet *original;
-    char valid_flag;
-    char written_flag;
     struct rs_packet *next;	/* Used for UDP output queue.  */
 };
 
-- 
cgit v1.1