Re: [Issue 248] Comments on EAP state machine v4
From: Nick Petroni (npetronics.umd.edu)
Date: Fri, 25 Jun 2004 13:08:55 -0400 (EDT)
> >No, you do not. YOu have a respnse *received*.
> >
> No you don't IINM
>
> I'm talking of Figures 6 and 7: you start in INITIALIZE move with UCT to
> SELECT_ACTION, take decision PASSTHROUGH, transition to
> INITIALIZE_PASSTHROUGH, take the transition currentId==NONE and end in
> AAA_IDLE
>
> I don't see the response you have... but I might well be confused as it
> was the case with the transition I forgot in Figure 3 :-( & ;-)
OK, again making me be precise ;). No, you did NOT receive a response. The
point is, the aaaEapResp variable is meant to tell the lower layer that
you have received one. Technically, you have not, but in the case of a
brand new connection that has had no packets but ends up in teh AAA_IDLE
state you STILL WANT TO SET aaaEAPResp so that the lower layer can build a
new request. It will know there was not a response based on the
aaaEapRespData. The point I am making is bad implementations cannot just
send garbage because they are required to PROCESS the data, not just send
it off.

The way it works (in very shorthand, please don't make me be more
precise) is:


Time    EAP Layer                            Lower Layer
====    =========                            ===========
 |     Transition to AAA_IDLE
 |     Set aaaEapResp = TRUE
 |                                        Sees aaaEapResp == TRUE
 |                                        Sees aaaEapRespData == NONE
 |                                        Build the first EAP Request
 |                                        set aaaEapReq
 |     Sees aaaEapReq
 |     sends the request
 |     waits for a response
 |     set aaaEapResp = TRUE
 |                                        Sees aaaEapResp == TRUE
 |                                        sees aaaEapRespData is filled
 |                                        Parses aaaEapRespData
 |                                        decides whether to send another
 |                                          request, sets aaaEapReq or
 |                                          aaaEapNoReq
 |
 V



Think of it as a handshake between the lower layer and the EAP layer. The
lower layer builds requests and waits for responses. the upper layer ships
the requests and waits for responses to pass down. Setting aaaEapResp
only transitions control to the lower layer so that it can do its thing.

Hope this helps. If not, maybe someone else can say it better than me or
show me I'm wrong :).

Regards,
nick


Results generated by Tiger Technologies using MHonArc.