[PATCHv2 6/8] Share ccid3_hc_rx_insert_options function via tfrc_ccids

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



[CCID-3][CCID-4][TFRC_CCIDS] Share ccid3_hc_rx_insert_options function via tfrc_ccids

Signed-off-by: Leandro Melo de Sales <leandro@xxxxxxxxxxxxxxxxxxxx>

--------------------> Patch v2 <-------------------------

The first version of this patch doest apply properly in the current ccid4 branch. This new version it is ok.

Index: ccid4.latest/net/dccp/ccids/ccid3.c
===================================================================
--- ccid4.latest.orig/net/dccp/ccids/ccid3.c
+++ ccid4.latest/net/dccp/ccids/ccid3.c
@@ -550,29 +550,6 @@ static void ccid3_hc_rx_send_feedback(st
 	dccp_send_ack(sk);
 }
 
-static int ccid3_hc_rx_insert_options(struct sock *sk, struct sk_buff *skb)
-{
-	const struct tfrc_hc_rx_sock *hcrx = tfrc_hc_rx_sk(sk);
-	__be32 x_recv, pinv;
-
-	if (!(sk->sk_state == DCCP_OPEN || sk->sk_state == DCCP_PARTOPEN))
-		return 0;
-
-	if (dccp_packet_without_ack(skb))
-		return 0;
-
-	x_recv = htonl(hcrx->trx_x_recv);
-	pinv   = htonl(hcrx->trx_pinv);
-
-	if (dccp_insert_option(sk, skb, TFRC_OPT_LOSS_EVENT_RATE,
-			       &pinv, sizeof(pinv)) ||
-	    dccp_insert_option(sk, skb, TFRC_OPT_RECEIVE_RATE,
-			       &x_recv, sizeof(x_recv)))
-		return -1;
-
-	return 0;
-}
-
 /** ccid3_first_li  -  Implements [RFC 3448, 6.3.1]
  *
  * Determine the length of the first loss interval via inverse lookup.
@@ -766,7 +743,7 @@ static struct ccid_operations ccid3 = {
 	.ccid_hc_rx_obj_size	   = sizeof(struct tfrc_hc_rx_sock),
 	.ccid_hc_rx_init	   = ccid3_hc_rx_init,
 	.ccid_hc_rx_exit	   = ccid3_hc_rx_exit,
-	.ccid_hc_rx_insert_options = ccid3_hc_rx_insert_options,
+	.ccid_hc_rx_insert_options = tfrc_rx_insert_options,
 	.ccid_hc_rx_packet_recv	   = ccid3_hc_rx_packet_recv,
 	.ccid_hc_rx_get_info	   = ccid3_hc_rx_get_info,
 	.ccid_hc_tx_get_info	   = ccid3_hc_tx_get_info,
Index: ccid4.latest/net/dccp/ccids/ccid4.c
===================================================================
--- ccid4.latest.orig/net/dccp/ccids/ccid4.c
+++ ccid4.latest/net/dccp/ccids/ccid4.c
@@ -584,29 +584,6 @@ static void ccid4_hc_rx_send_feedback(st
 	dccp_send_ack(sk);
 }
 
-static int ccid4_hc_rx_insert_options(struct sock *sk, struct sk_buff *skb)
-{
-	const struct tfrc_hc_rx_sock *hcrx = tfrc_hc_rx_sk(sk);
-	__be32 x_recv, pinv;
-
-	if (!(sk->sk_state == DCCP_OPEN || sk->sk_state == DCCP_PARTOPEN))
-		return 0;
-
-	if (dccp_packet_without_ack(skb))
-		return 0;
-
-	x_recv = htonl(hcrx->trx_x_recv);
-	pinv   = htonl(hcrx->trx_pinv);
-
-	if (dccp_insert_option(sk, skb, TFRC_OPT_LOSS_EVENT_RATE,
-			       &pinv, sizeof(pinv)) ||
-	    dccp_insert_option(sk, skb, TFRC_OPT_RECEIVE_RATE,
-			       &x_recv, sizeof(x_recv)))
-		return -1;
-
-	return 0;
-}
-
 /** ccid4_first_li  -  Implements [RFC 3448, 6.3.1]
  *
  * Determine the length of the first loss interval via inverse lookup.
@@ -800,7 +777,7 @@ static struct ccid_operations ccid4 = {
 	.ccid_hc_rx_obj_size	   = sizeof(struct tfrc_hc_rx_sock),
 	.ccid_hc_rx_init	   = ccid4_hc_rx_init,
 	.ccid_hc_rx_exit	   = ccid4_hc_rx_exit,
-	.ccid_hc_rx_insert_options = ccid4_hc_rx_insert_options,
+	.ccid_hc_rx_insert_options = tfrc_rx_insert_options,
 	.ccid_hc_rx_packet_recv	   = ccid4_hc_rx_packet_recv,
 	.ccid_hc_rx_get_info	   = ccid4_hc_rx_get_info,
 	.ccid_hc_tx_get_info	   = ccid4_hc_tx_get_info,
Index: ccid4.latest/net/dccp/ccids/lib/tfrc_ccids.c
===================================================================
--- ccid4.latest.orig/net/dccp/ccids/lib/tfrc_ccids.c
+++ ccid4.latest/net/dccp/ccids/lib/tfrc_ccids.c
@@ -137,3 +137,28 @@ int tfrc_tx_parse_options(struct sock *s
 }
 
 EXPORT_SYMBOL_GPL(tfrc_tx_parse_options);
+
+int tfrc_rx_insert_options(struct sock *sk, struct sk_buff *skb)
+{
+	const struct tfrc_hc_rx_sock *hcrx = tfrc_hc_rx_sk(sk);
+	__be32 x_recv, pinv;
+
+	if (!(sk->sk_state == DCCP_OPEN || sk->sk_state == DCCP_PARTOPEN))
+		return 0;
+
+	if (dccp_packet_without_ack(skb))
+		return 0;
+
+	x_recv = htonl(hcrx->trx_x_recv);
+	pinv   = htonl(hcrx->trx_pinv);
+
+	if (dccp_insert_option(sk, skb, TFRC_OPT_LOSS_EVENT_RATE,
+			       &pinv, sizeof(pinv)) ||
+	    dccp_insert_option(sk, skb, TFRC_OPT_RECEIVE_RATE,
+			       &x_recv, sizeof(x_recv)))
+		return -1;
+
+	return 0;
+}
+
+EXPORT_SYMBOL_GPL(tfrc_rx_insert_options);
Index: ccid4.latest/net/dccp/ccids/lib/tfrc_ccids.h
===================================================================
--- ccid4.latest.orig/net/dccp/ccids/lib/tfrc_ccids.h
+++ ccid4.latest/net/dccp/ccids/lib/tfrc_ccids.h
@@ -196,3 +196,5 @@ extern void tfrc_hc_tx_update_win_count(
 
 extern int tfrc_tx_parse_options(struct sock *sk, unsigned char option,
 			unsigned char len, u16 idx, unsigned char *value);
+
+extern int tfrc_rx_insert_options(struct sock *sk, struct sk_buff *skb);
-
To unsubscribe from this list: send the line "unsubscribe dccp" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel]     [IETF DCCP]     [Linux Networking]     [Git]     [Security]     [Linux Assembly]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]

  Powered by Linux