sctp: implement prsctp TTL policy
[deliverable/linux.git] / include / net / sctp / structs.h
index 16b013a6191cf1c416e4dd1aeb1707a8569ea49b..6bcda715008e55456e3fa1abc978dccd0f2f8979 100644 (file)
@@ -566,6 +566,9 @@ struct sctp_chunk {
        /* This points to the sk_buff containing the actual data.  */
        struct sk_buff *skb;
 
+       /* In case of GSO packets, this will store the head one */
+       struct sk_buff *head_skb;
+
        /* These are the SCTP headers by reverse order in a packet.
         * Note that some of these may happen more than once.  In that
         * case, we point at the "current" one, whatever that means
@@ -599,6 +602,16 @@ struct sctp_chunk {
        /* This needs to be recoverable for SCTP_SEND_FAILED events. */
        struct sctp_sndrcvinfo sinfo;
 
+       /* We use this field to record param for prsctp policies,
+        * for TTL policy, it is the time_to_drop of this chunk,
+        * for RTX policy, it is the max_sent_count of this chunk,
+        * for PRIO policy, it is the priority of this chunk.
+        */
+       unsigned long prsctp_param;
+
+       /* How many times this chunk have been sent, for prsctp RTX policy */
+       int sent_count;
+
        /* Which association does this belong to?  */
        struct sctp_association *asoc;
 
@@ -696,6 +709,8 @@ struct sctp_packet {
        size_t overhead;
        /* This is the total size of all chunks INCLUDING padding.  */
        size_t size;
+       /* This is the maximum size this packet may have */
+       size_t max_size;
 
        /* The packet is destined for this transport address.
         * The function we finally use to pass down to the next lower
@@ -1251,7 +1266,8 @@ struct sctp_endpoint {
        /* SCTP-AUTH: endpoint shared keys */
        struct list_head endpoint_shared_keys;
        __u16 active_key_id;
-       __u8  auth_enable;
+       __u8  auth_enable:1,
+             prsctp_enable:1;
 };
 
 /* Recover the outter endpoint structure. */
@@ -1843,9 +1859,13 @@ struct sctp_association {
        __u16 active_key_id;
 
        __u8 need_ecne:1,       /* Need to send an ECNE Chunk? */
-            temp:1;            /* Is it a temporary association? */
+            temp:1,            /* Is it a temporary association? */
+            prsctp_enable:1;
 
        struct sctp_priv_assoc_stats stats;
+
+       __u64 abandoned_unsent[SCTP_PR_INDEX(MAX) + 1];
+       __u64 abandoned_sent[SCTP_PR_INDEX(MAX) + 1];
 };
 
 
This page took 0.031525 seconds and 5 git commands to generate.