diff options
author | Arnaldo Carvalho de Melo <acme@mandriva.com> | 2006-03-21 01:32:06 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2006-03-21 01:32:06 -0500 |
commit | 2d0817d11eaec57435feb61493331a763f732a2b (patch) | |
tree | 7c42229b1cc64e67efe8ed21b82cdc513e638f82 /net/dccp/ccids/ccid3.c | |
parent | 110bae4efb5ed5565257a0fb9f6d26e6125a1c4b (diff) |
[DCCP] options: Make dccp_insert_options & friends yell on error
And not the silly LIMIT_NETDEBUG and silently return without inserting
the option requested.
Also drop some old debugging messages associated to option insertion.
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/dccp/ccids/ccid3.c')
-rw-r--r-- | net/dccp/ccids/ccid3.c | 37 |
1 files changed, 20 insertions, 17 deletions
diff --git a/net/dccp/ccids/ccid3.c b/net/dccp/ccids/ccid3.c index ff426a900999..b4a51d0355a5 100644 --- a/net/dccp/ccids/ccid3.c +++ b/net/dccp/ccids/ccid3.c | |||
@@ -574,16 +574,15 @@ static void ccid3_hc_tx_packet_recv(struct sock *sk, struct sk_buff *skb) | |||
574 | } | 574 | } |
575 | } | 575 | } |
576 | 576 | ||
577 | static void ccid3_hc_tx_insert_options(struct sock *sk, struct sk_buff *skb) | 577 | static int ccid3_hc_tx_insert_options(struct sock *sk, struct sk_buff *skb) |
578 | { | 578 | { |
579 | const struct ccid3_hc_tx_sock *hctx = ccid3_hc_tx_sk(sk); | 579 | const struct ccid3_hc_tx_sock *hctx = ccid3_hc_tx_sk(sk); |
580 | 580 | ||
581 | BUG_ON(hctx == NULL); | 581 | BUG_ON(hctx == NULL); |
582 | 582 | ||
583 | if (!(sk->sk_state == DCCP_OPEN || sk->sk_state == DCCP_PARTOPEN)) | 583 | if (sk->sk_state == DCCP_OPEN || sk->sk_state == DCCP_PARTOPEN) |
584 | return; | 584 | DCCP_SKB_CB(skb)->dccpd_ccval = hctx->ccid3hctx_last_win_count; |
585 | 585 | return 0; | |
586 | DCCP_SKB_CB(skb)->dccpd_ccval = hctx->ccid3hctx_last_win_count; | ||
587 | } | 586 | } |
588 | 587 | ||
589 | static int ccid3_hc_tx_parse_options(struct sock *sk, unsigned char option, | 588 | static int ccid3_hc_tx_parse_options(struct sock *sk, unsigned char option, |
@@ -774,7 +773,7 @@ static void ccid3_hc_rx_send_feedback(struct sock *sk) | |||
774 | dccp_send_ack(sk); | 773 | dccp_send_ack(sk); |
775 | } | 774 | } |
776 | 775 | ||
777 | static void ccid3_hc_rx_insert_options(struct sock *sk, struct sk_buff *skb) | 776 | static int ccid3_hc_rx_insert_options(struct sock *sk, struct sk_buff *skb) |
778 | { | 777 | { |
779 | const struct ccid3_hc_rx_sock *hcrx = ccid3_hc_rx_sk(sk); | 778 | const struct ccid3_hc_rx_sock *hcrx = ccid3_hc_rx_sk(sk); |
780 | __be32 x_recv, pinv; | 779 | __be32 x_recv, pinv; |
@@ -782,23 +781,27 @@ static void ccid3_hc_rx_insert_options(struct sock *sk, struct sk_buff *skb) | |||
782 | BUG_ON(hcrx == NULL); | 781 | BUG_ON(hcrx == NULL); |
783 | 782 | ||
784 | if (!(sk->sk_state == DCCP_OPEN || sk->sk_state == DCCP_PARTOPEN)) | 783 | if (!(sk->sk_state == DCCP_OPEN || sk->sk_state == DCCP_PARTOPEN)) |
785 | return; | 784 | return 0; |
786 | 785 | ||
787 | DCCP_SKB_CB(skb)->dccpd_ccval = hcrx->ccid3hcrx_last_counter; | 786 | DCCP_SKB_CB(skb)->dccpd_ccval = hcrx->ccid3hcrx_last_counter; |
788 | 787 | ||
789 | if (dccp_packet_without_ack(skb)) | 788 | if (dccp_packet_without_ack(skb)) |
790 | return; | 789 | return 0; |
791 | 790 | ||
792 | if (hcrx->ccid3hcrx_elapsed_time != 0) | ||
793 | dccp_insert_option_elapsed_time(sk, skb, | ||
794 | hcrx->ccid3hcrx_elapsed_time); | ||
795 | dccp_insert_option_timestamp(sk, skb); | ||
796 | x_recv = htonl(hcrx->ccid3hcrx_x_recv); | 791 | x_recv = htonl(hcrx->ccid3hcrx_x_recv); |
797 | pinv = htonl(hcrx->ccid3hcrx_pinv); | 792 | pinv = htonl(hcrx->ccid3hcrx_pinv); |
798 | dccp_insert_option(sk, skb, TFRC_OPT_LOSS_EVENT_RATE, | 793 | |
799 | &pinv, sizeof(pinv)); | 794 | if ((hcrx->ccid3hcrx_elapsed_time != 0 && |
800 | dccp_insert_option(sk, skb, TFRC_OPT_RECEIVE_RATE, | 795 | dccp_insert_option_elapsed_time(sk, skb, |
801 | &x_recv, sizeof(x_recv)); | 796 | hcrx->ccid3hcrx_elapsed_time)) || |
797 | dccp_insert_option_timestamp(sk, skb) || | ||
798 | dccp_insert_option(sk, skb, TFRC_OPT_LOSS_EVENT_RATE, | ||
799 | &pinv, sizeof(pinv)) || | ||
800 | dccp_insert_option(sk, skb, TFRC_OPT_RECEIVE_RATE, | ||
801 | &x_recv, sizeof(x_recv))) | ||
802 | return -1; | ||
803 | |||
804 | return 0; | ||
802 | } | 805 | } |
803 | 806 | ||
804 | /* calculate first loss interval | 807 | /* calculate first loss interval |