int WfaConRcvVOSndAllE(struct station *sta,unsigned int *rmsg,int length)
{
    int r;
    if(!expectedmsgrcd(rmsg,APTS_DEFAULT,tos_vo))
    {
        printf("\r\nexpected message not rcv or BAD TOS\n");
    }
    else
    {
        rmsg[0] = ++(sta->msgno);
        set_dscp(tos_vo);
        r = sendto(sd, rmsg, 190, sockflags, (struct sockaddr *)&from, sizeof(from));
        if (traceflag) mpx("CMD send\n", rmsg, 64);
        printf("Rcv VO sent VO\n");

        rmsg[0] = ++(sta->msgno);
        set_dscp(tos_vi);
        r = sendto(sd, rmsg, 190, sockflags, (struct sockaddr *)&from, sizeof(from));
        if (traceflag) mpx("CMD send\n", rmsg, 64);
        printf("sent VI\n");

        rmsg[0] = ++(sta->msgno);
        set_dscp(tos_be);
        r = sendto(sd, rmsg, 190, sockflags, (struct sockaddr *)&from, sizeof(from));
        if (traceflag) mpx("CMD send\n", rmsg, 64);
        printf("sent BE\n");

        rmsg[0] = ++(sta->msgno);
        set_dscp(tos_bk);
        r = sendto(sd, rmsg, 190, sockflags, (struct sockaddr *)&from, sizeof(from));
        if(r < 0)
        {
            printf("\nhere u go:dead\n");
        }
        if (traceflag) mpx("CMD send(BK)\n", rmsg, 64);
        {
            printf("sent BK\n");
        }

        txmsg[0] = ++(sta->msgno);
        set_dscp(tos_bk);
        create_apts_msg(APTS_STOP, txmsg,sta->myid);

        txmsg[1] = tos_bk;
        r = sendto(sd, txmsg, 190, sockflags, (struct sockaddr *)&from, sizeof(from));
        if (traceflag) mpx("CMD send STOP(RcvVOSndAllE)\n", txmsg, 64);
        sta->state++;
    }
}
/* rcv VI echo back VI, sent brct  */
int WfaConRcvVISndBcast(struct station *sta,unsigned int *rmsg,int length)
{
    int r;
    if(!expectedmsgrcd(rmsg,APTS_DEFAULT,tos_vi))
    {
        printf("\r\nexpected message not rcv or BAD TOS\n");
    }
    else
    {
        rmsg[0] = ++(sta->msgno);
        set_dscp(tos_vi);
        r = sendto(sd, rmsg, 190, sockflags, (struct sockaddr *)&from, sizeof(from));
        rmsg[0] = ++(sta->msgno);
        set_dscp(tos_be);
        r = sendto(rd, rmsg, 190, sockflags, (struct sockaddr *)&dst, sizeof(dst));
        if (traceflag) mpx("CMD send brdcst BE\n", rmsg, 64);
        printf("Rcv/sent VI, sent Broadcast\n");
        sta->state++;
    }
}
int WfaConSndVI(struct station *sta,unsigned int *rmsg,int length)
{
    int r;
    set_dscp(tos_vi);
    txmsg[0] = ++(sta->msgno);
    create_apts_msg(APTS_DEFAULT, txmsg,sta->myid);
    txmsg[1] = tos_vi;
    r = sendto(sd, txmsg, 190, sockflags, (struct sockaddr *)&from, sizeof(from));
    sta->state++;
    if (traceflag) mpx("CMD send(SndVI)\n", txmsg, 64);
    printf("sent VI\n");

}
int WfaConRcvVISndVOE(struct station *sta,unsigned int *rmsg,int length)
{
    int r;
    if(!expectedmsgrcd(rmsg,APTS_DEFAULT,tos_vi))
    {
        printf("\r\nexpected message not rcv or BAD TOS\n");
    }
    else
    {
        rmsg[0] = ++(sta->msgno);
        set_dscp(tos_vo);
        r = sendto(sd, rmsg, 190, sockflags, (struct sockaddr *)&from, sizeof(from));
        if (traceflag) mpx("CMD send\n", rmsg, 64);
        printf("rcv VI sent VO\n");

        txmsg[0] = ++(sta->msgno);
        create_apts_msg(APTS_STOP, txmsg,sta->myid);
        set_dscp(tos_be);
        r = sendto(sd, txmsg, 190, sockflags, (struct sockaddr *)&from, sizeof(from));
        sta->state++;
        if (traceflag) mpx("CMD send STOP(RcvVISndVOE)\n", txmsg, 64);
    }
}
int WfaConRcvVOSnd(struct station *sta,unsigned int *rmsg,int length)
{
    int r;
    if(!expectedmsgrcd(rmsg,APTS_DEFAULT,tos_vo))
    {
        printf("\r\nexpected message not rcv or BAD TOS\n");
    }
    else
    {
        rmsg[0] = ++(sta->msgno);
        set_dscp(tos_vo);
        r = sendto(sd, rmsg, 190, sockflags, (struct sockaddr *)&from, sizeof(from));
        sta->state++;
        if (traceflag) mpx("CMD send (RcvVOSnd)\n", rmsg, 64);
        printf("Rcv VO sent VO\n");
    }
}
void WfaConResetAll()
{
    int r;
    reset=1;
    printf("\nEntering WfaConResetAll:: ");
    alarm(0);
    num_retry++;
    if(num_retry > MAXRETRY)
        IAmDead();
    if(reset_recd)
    {
        reset_recd = 0;
        set_dscp(tos_be);
        create_apts_msg(APTS_RESET_RESP, txmsg,0);
        txmsg[1] = tos_be;
        r = sendto(sd, txmsg, 190, sockflags, (struct sockaddr *)&from, sizeof(from));
        if (traceflag) mpx("CMD send\n", txmsg, 64);
        printf("\nsent RESET RESP\n");
    }
    else
    {

        int resp_recd=0;
        create_apts_msg(APTS_RESET, txmsg,0);
        txmsg[1] = tos_be;
        r = sendto(sd, txmsg, 190, sockflags, (struct sockaddr *)&from, sizeof(from));
        if (traceflag) mpx("CMD send\n", txmsg, 64);
        printf("\nsent RESET \n");
        while(!resp_recd)
        {
            r = recvfrom(sd, rmsg, sizeof(rmsg), 0, (struct sockaddr *)&from, &fromlen);
            if (r<0)
            {
                perror("rcv error:");
                exit(1);
            }
            if(rmsg[10] != APTS_RESET_RESP)
                continue;
            if (traceflag) mpx("CMD recd\n", rmsg, 64);
            alarm(0);
            resp_recd=1;
        }/* while  */
    }
}
int WfaConRcvConfSndVI(struct station *sta,unsigned int *rmsg,int length)
{
    int r;
    if(!expectedmsgrcd(rmsg,APTS_CONFIRM,tos_be))
    {
        printf("\r\nConfirm not rcv or BAD TOS\n");
    }
    else
    {
        set_dscp(tos_vi);
        txmsg[0] = ++(sta->msgno);
        create_apts_msg(APTS_DEFAULT, txmsg,sta->myid);
        txmsg[1] = tos_vi;
        r = sendto(sd, txmsg, 190, sockflags, (struct sockaddr *)&from, sizeof(from));
        sta->state++;
        if (traceflag) mpx("CMD send (VI)\n", txmsg, 64);
        printf("Rcv Confirm sent VI\n");
    }
}
/* L.1 test case  */
int WfaConRcvVOSndCyclic(struct station *sta,unsigned int *rmsg,int length)
{
    int r,id, dscpLocal = 0;
    static int count=0;
    if(!expectedmsgrcdl1(rmsg,APTS_DEFAULT,tos_vo)) // call L.1 case check routine in wfa_util.c
    {

        if(!expectedmsgrcdl1(rmsg,APTS_STOP,tos_be)) //call L.1 case check routine in wfa_util.c
            printf("\r\nWfaConRcvVOSndCyclic::expected STOP message not rcv or BAD TOS BE\n");
        else
        {
            count = 0;
            for(id=0; id<NSTA; id++)
            {
                if (stations[id].s_addr == 0)
                {
                    break;
                }
                else
                {
                    printf("\n sta count is %d\n",stations[id].msgno);
                    count+=stations[id].msgno;
                }
            }

            txmsg[0] = count;
            printf("\n count is %d\n",count);
            set_dscp(tos_be);
            create_apts_msg(APTS_STOP, txmsg,sta->myid);
            txmsg[1] = tos_be;
            if(can_quit)
            {
                if(!sta->alreadyCleared)
                {
                    strcpy((char *)&txmsg[11], "APTSL1 STOP");
                    r = sendto(sd, txmsg, 190, sockflags, (struct sockaddr *)&from, sizeof(from));
                    if (traceflag) mpx("CMD send\n", txmsg, 64);
                    sleep(5);
                    printf("\n >>> EXISTING >>> ret=%d\n",r);
                    exit(0);
                }
                else
                    r = sendto(sd, txmsg, 190, sockflags, (struct sockaddr *)&from, sizeof(from));
                if (traceflag) mpx("CMD send\n", txmsg, 64);
            }
            else
            {
                r = sendto(sd, txmsg, 190, sockflags, (struct sockaddr *)&from, sizeof(from));
                if (traceflag) mpx("CMD send\n", txmsg, 64);

                sta->alreadyCleared = 0;
                can_quit=1;
            }
        }
    }
    else
    {
        count++;
        printf("\r\n Rcv pkt #%d ",count);
        rmsg[0] = ++(sta->msgno);
        dscpLocal=set_dscp0(tos_vo);  // no sleep setting
        r = sendto(sd, rmsg, 190, sockflags, (struct sockaddr *)&from, sizeof(from));
        printf("sent dscp VO, return dscp=0x%x\n", dscpLocal);
        if ( count >= 3000)
        {
            //No state change for L.1::sta->state++;
            //count = 0;
        }
    }
}