aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/dccp/input.c38
-rw-r--r--net/dccp/ipv4.c38
-rw-r--r--net/dccp/ipv6.c33
-rw-r--r--net/dccp/minisocks.c10
4 files changed, 68 insertions, 51 deletions
diff --git a/net/dccp/input.c b/net/dccp/input.c
index 1d24881ac0ab..97ccdc30fd89 100644
--- a/net/dccp/input.c
+++ b/net/dccp/input.c
@@ -431,29 +431,25 @@ int dccp_rcv_state_process(struct sock *sk, struct sk_buff *skb,
431 431
432 /* 432 /*
433 * Step 3: Process LISTEN state 433 * Step 3: Process LISTEN state
434 * (Continuing from dccp_v4_do_rcv and dccp_v6_do_rcv)
435 * 434 *
436 * If S.state == LISTEN, 435 * If S.state == LISTEN,
437 * If P.type == Request or P contains a valid Init Cookie 436 * If P.type == Request or P contains a valid Init Cookie option,
438 * option, 437 * (* Must scan the packet's options to check for Init
439 * * Must scan the packet's options to check for an Init 438 * Cookies. Only Init Cookies are processed here,
440 * Cookie. Only the Init Cookie is processed here, 439 * however; other options are processed in Step 8. This
441 * however; other options are processed in Step 8. This 440 * scan need only be performed if the endpoint uses Init
442 * scan need only be performed if the endpoint uses Init 441 * Cookies *)
443 * Cookies * 442 * (* Generate a new socket and switch to that socket *)
444 * * Generate a new socket and switch to that socket * 443 * Set S := new socket for this port pair
445 * Set S := new socket for this port pair 444 * S.state = RESPOND
446 * S.state = RESPOND 445 * Choose S.ISS (initial seqno) or set from Init Cookies
447 * Choose S.ISS (initial seqno) or set from Init Cookie 446 * Initialize S.GAR := S.ISS
448 * Set S.ISR, S.GSR, S.SWL, S.SWH from packet or Init Cookie 447 * Set S.ISR, S.GSR, S.SWL, S.SWH from packet or Init
449 * Continue with S.state == RESPOND 448 * Cookies Continue with S.state == RESPOND
450 * * A Response packet will be generated in Step 11 * 449 * (* A Response packet will be generated in Step 11 *)
451 * Otherwise, 450 * Otherwise,
452 * Generate Reset(No Connection) unless P.type == Reset 451 * Generate Reset(No Connection) unless P.type == Reset
453 * Drop packet and return 452 * Drop packet and return
454 *
455 * NOTE: the check for the packet types is done in
456 * dccp_rcv_state_process
457 */ 453 */
458 if (sk->sk_state == DCCP_LISTEN) { 454 if (sk->sk_state == DCCP_LISTEN) {
459 if (dh->dccph_type == DCCP_PKT_REQUEST) { 455 if (dh->dccph_type == DCCP_PKT_REQUEST) {
diff --git a/net/dccp/ipv4.c b/net/dccp/ipv4.c
index d75ce8c7e488..91bffaa761a6 100644
--- a/net/dccp/ipv4.c
+++ b/net/dccp/ipv4.c
@@ -729,24 +729,23 @@ int dccp_v4_do_rcv(struct sock *sk, struct sk_buff *skb)
729 729
730 /* 730 /*
731 * Step 3: Process LISTEN state 731 * Step 3: Process LISTEN state
732 * If S.state == LISTEN, 732 * If P.type == Request or P contains a valid Init Cookie option,
733 * If P.type == Request or P contains a valid Init Cookie 733 * (* Must scan the packet's options to check for Init
734 * option, 734 * Cookies. Only Init Cookies are processed here,
735 * * Must scan the packet's options to check for an Init 735 * however; other options are processed in Step 8. This
736 * Cookie. Only the Init Cookie is processed here, 736 * scan need only be performed if the endpoint uses Init
737 * however; other options are processed in Step 8. This 737 * Cookies *)
738 * scan need only be performed if the endpoint uses Init 738 * (* Generate a new socket and switch to that socket *)
739 * Cookies * 739 * Set S := new socket for this port pair
740 * * Generate a new socket and switch to that socket * 740 * S.state = RESPOND
741 * Set S := new socket for this port pair 741 * Choose S.ISS (initial seqno) or set from Init Cookies
742 * S.state = RESPOND 742 * Initialize S.GAR := S.ISS
743 * Choose S.ISS (initial seqno) or set from Init Cookie 743 * Set S.ISR, S.GSR, S.SWL, S.SWH from packet or Init Cookies
744 * Set S.ISR, S.GSR, S.SWL, S.SWH from packet or Init Cookie 744 * Continue with S.state == RESPOND
745 * Continue with S.state == RESPOND 745 * (* A Response packet will be generated in Step 11 *)
746 * * A Response packet will be generated in Step 11 * 746 * Otherwise,
747 * Otherwise, 747 * Generate Reset(No Connection) unless P.type == Reset
748 * Generate Reset(No Connection) unless P.type == Reset 748 * Drop packet and return
749 * Drop packet and return
750 * 749 *
751 * NOTE: the check for the packet types is done in 750 * NOTE: the check for the packet types is done in
752 * dccp_rcv_state_process 751 * dccp_rcv_state_process
@@ -887,8 +886,6 @@ static int dccp_v4_rcv(struct sk_buff *skb)
887 /* 886 /*
888 * Step 2: 887 * Step 2:
889 * If no socket ... 888 * If no socket ...
890 * Generate Reset(No Connection) unless P.type == Reset
891 * Drop packet and return
892 */ 889 */
893 if (sk == NULL) { 890 if (sk == NULL) {
894 dccp_pr_debug("failed to look up flow ID in table and " 891 dccp_pr_debug("failed to look up flow ID in table and "
@@ -919,6 +916,7 @@ no_dccp_socket:
919 goto discard_it; 916 goto discard_it;
920 /* 917 /*
921 * Step 2: 918 * Step 2:
919 * If no socket ...
922 * Generate Reset(No Connection) unless P.type == Reset 920 * Generate Reset(No Connection) unless P.type == Reset
923 * Drop packet and return 921 * Drop packet and return
924 */ 922 */
diff --git a/net/dccp/ipv6.c b/net/dccp/ipv6.c
index 19a4f763099d..201801e1532d 100644
--- a/net/dccp/ipv6.c
+++ b/net/dccp/ipv6.c
@@ -487,10 +487,10 @@ static int dccp_v6_conn_request(struct sock *sk, struct sk_buff *skb)
487 /* 487 /*
488 * Step 3: Process LISTEN state 488 * Step 3: Process LISTEN state
489 * 489 *
490 * Set S.ISR, S.GSR, S.SWL, S.SWH from packet or Init Cookie 490 * Set S.ISR, S.GSR, S.SWL, S.SWH from packet or Init Cookie
491 * 491 *
492 * In fact we defer setting S.GSR, S.SWL, S.SWH to 492 * In fact we defer setting S.GSR, S.SWL, S.SWH to
493 * dccp_create_openreq_child. 493 * dccp_create_openreq_child.
494 */ 494 */
495 dreq = dccp_rsk(req); 495 dreq = dccp_rsk(req);
496 dreq->dreq_isr = dcb->dccpd_seq; 496 dreq->dreq_isr = dcb->dccpd_seq;
@@ -760,6 +760,30 @@ static int dccp_v6_do_rcv(struct sock *sk, struct sk_buff *skb)
760 return 0; 760 return 0;
761 } 761 }
762 762
763 /*
764 * Step 3: Process LISTEN state
765 * If S.state == LISTEN,
766 * If P.type == Request or P contains a valid Init Cookie option,
767 * (* Must scan the packet's options to check for Init
768 * Cookies. Only Init Cookies are processed here,
769 * however; other options are processed in Step 8. This
770 * scan need only be performed if the endpoint uses Init
771 * Cookies *)
772 * (* Generate a new socket and switch to that socket *)
773 * Set S := new socket for this port pair
774 * S.state = RESPOND
775 * Choose S.ISS (initial seqno) or set from Init Cookies
776 * Initialize S.GAR := S.ISS
777 * Set S.ISR, S.GSR, S.SWL, S.SWH from packet or Init Cookies
778 * Continue with S.state == RESPOND
779 * (* A Response packet will be generated in Step 11 *)
780 * Otherwise,
781 * Generate Reset(No Connection) unless P.type == Reset
782 * Drop packet and return
783 *
784 * NOTE: the check for the packet types is done in
785 * dccp_rcv_state_process
786 */
763 if (sk->sk_state == DCCP_LISTEN) { 787 if (sk->sk_state == DCCP_LISTEN) {
764 struct sock *nsk = dccp_v6_hnd_req(sk, skb); 788 struct sock *nsk = dccp_v6_hnd_req(sk, skb);
765 789
@@ -826,8 +850,6 @@ static int dccp_v6_rcv(struct sk_buff **pskb)
826 /* 850 /*
827 * Step 2: 851 * Step 2:
828 * If no socket ... 852 * If no socket ...
829 * Generate Reset(No Connection) unless P.type == Reset
830 * Drop packet and return
831 */ 853 */
832 if (sk == NULL) { 854 if (sk == NULL) {
833 dccp_pr_debug("failed to look up flow ID in table and " 855 dccp_pr_debug("failed to look up flow ID in table and "
@@ -857,6 +879,7 @@ no_dccp_socket:
857 goto discard_it; 879 goto discard_it;
858 /* 880 /*
859 * Step 2: 881 * Step 2:
882 * If no socket ...
860 * Generate Reset(No Connection) unless P.type == Reset 883 * Generate Reset(No Connection) unless P.type == Reset
861 * Drop packet and return 884 * Drop packet and return
862 */ 885 */
diff --git a/net/dccp/minisocks.c b/net/dccp/minisocks.c
index 0f228ab5169d..d3de696fe4bf 100644
--- a/net/dccp/minisocks.c
+++ b/net/dccp/minisocks.c
@@ -98,8 +98,8 @@ struct sock *dccp_create_openreq_child(struct sock *sk,
98 /* 98 /*
99 * Step 3: Process LISTEN state 99 * Step 3: Process LISTEN state
100 * 100 *
101 * // Generate a new socket and switch to that socket 101 * (* Generate a new socket and switch to that socket *)
102 * Set S := new socket for this port pair 102 * Set S := new socket for this port pair
103 */ 103 */
104 struct sock *newsk = inet_csk_clone(sk, req, GFP_ATOMIC); 104 struct sock *newsk = inet_csk_clone(sk, req, GFP_ATOMIC);
105 105
@@ -148,9 +148,9 @@ out_free:
148 /* 148 /*
149 * Step 3: Process LISTEN state 149 * Step 3: Process LISTEN state
150 * 150 *
151 * Choose S.ISS (initial seqno) or set from Init Cookie 151 * Choose S.ISS (initial seqno) or set from Init Cookies
152 * Set S.ISR, S.GSR, S.SWL, S.SWH from packet or Init 152 * Initialize S.GAR := S.ISS
153 * Cookie 153 * Set S.ISR, S.GSR, S.SWL, S.SWH from packet or Init Cookies
154 */ 154 */
155 155
156 /* See dccp_v4_conn_request */ 156 /* See dccp_v4_conn_request */