亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? smsprs.cpp

?? ril source code for Windows CE
?? CPP
?? 第 1 頁(yè) / 共 4 頁(yè)
字號(hào):
    }

    // Parse protocol ID
    if (!ParseMsgProtocolID(pbWalk, rrmMsg.msgOutCommand.dwProtocolID, cbParsed)) {
        goto Error;
    }
    rrmMsg.dwParams |= RIL_PARAM_M_PROTOCOLID;
    pbWalk += cbParsed;
    if (pbWalk > pbEnd) {
        goto Error;
    }

    // Parse command type
    if (!ParseMsgCommandType(pbWalk, rrmMsg.msgOutCommand.dwCommandType, cbParsed)) {
        goto Error;
    }
    rrmMsg.dwParams |= RIL_PARAM_M_COMMANDTYPE;
    pbWalk += cbParsed;
    if (pbWalk > pbEnd) {
        goto Error;
    }

    // Parse the target message reference
    rrmMsg.msgOutCommand.dwTgtMsgReference = *pbWalk++;
    rrmMsg.dwParams |= RIL_PARAM_M_TGTMSGREFERENCE;
    if (pbWalk > pbEnd) {
        goto Error;
    }

    // Parse address
    if (!ParseMsgAddress(pbWalk, FALSE, rrmMsg.msgOutCommand.raDestAddress, cbParsed, TRUE)) {
        goto Error;
    }
    rrmMsg.dwParams |= RIL_PARAM_M_DESTADDRESS;
    pbWalk += cbParsed;
    if (pbWalk > pbEnd) {
        goto Error;
    }

    // Parse command data length
    rrmMsg.msgOutCommand.cbCmdLength = *pbWalk++;
    rrmMsg.dwParams |= RIL_PARAM_M_CMDLENGTH;
    if (pbWalk > pbEnd) {
        goto Error;
    }

    // Parse command data
    (void)memcpy(rrmMsg.msgOutCommand.rgbCmd, pbWalk, min(rrmMsg.msgOutCommand.cbCmdLength, MAXLENGTH_CMD));
    rrmMsg.dwParams |= RIL_PARAM_M_CMD;
    pbWalk += cbParsed;
    if (pbWalk > pbEnd) {
        goto Error;
    }
    fRet = TRUE;

Error:
    return fRet;
}


//
// Parse an Incoming SMS message into a RILMESSAGE structure
//
HRESULT ParseSMSMessage(const LPCSTR sIn, const UINT cbIn, BOOL fIncoming, BOOL fPrependedSMSC, RILMESSAGE& rrmMsg)
{
    FUNCTION_TRACE(ParseSMSMessage);
    DEBUGCHK(NULL != sIn);
    DEBUGCHK(0 < cbIn);

    BYTE* pbGSMBytes = NULL;
    UINT cbGSMBytes;
    UINT cbParsed = 0;
    BYTE bMsgType;
    BOOL fRet = TRUE;
    HRESULT hr = S_OK;

    // Zero out the message structure
    (void)memset(&rrmMsg, 0x00, sizeof(RILMESSAGE));
    rrmMsg.cbSize = sizeof(RILMESSAGE);

    // HW-SPECIFIC: some hardware don't encode the SMSC address prepended to a message

    if ('+' == *sIn) {
        UINT i;
        LPWSTR pwchAddress;
        LPCSTR pchIn;
        LPCSTR sAfterSMSCAddress;
        UINT cbAfterSMSCAddress;

        // Assume the type and numplan
        rrmMsg.raSvcCtrAddress.dwType = RIL_ADDRTYPE_INTERNATIONAL;
        rrmMsg.raSvcCtrAddress.dwNumPlan = RIL_NUMPLAN_TELEPHONE;

        // Copy the phone number over
        pwchAddress = rrmMsg.raSvcCtrAddress.wszAddress;
        pchIn = sIn + 1;
        for (i = 0; i < SMSC_BOGUS_ADDR_LENGTH ; i++) {
            *pwchAddress++ = *pchIn & 0x00ff;
        }
        *pwchAddress = L'\0';

        // Set approproiate param flags
        rrmMsg.raSvcCtrAddress.dwParams |= (RIL_PARAM_A_TYPE | RIL_PARAM_A_NUMPLAN | RIL_PARAM_A_ADDRESS);
        rrmMsg.dwParams |= RIL_PARAM_M_SVCCTRADDRESS;

        // Convert the rest of the message from GSM default HEX represention into GSM default
        sAfterSMSCAddress = sIn + SMSC_BOGUS_ADDR_LENGTH;
        cbAfterSMSCAddress = cbIn - SMSC_BOGUS_ADDR_LENGTH;
        pbGSMBytes = new BYTE[cbAfterSMSCAddress/ 2 + 1];
        if (!pbGSMBytes) {
            hr = E_OUTOFMEMORY;
            goto Error;
        }
        if (!GSMHexToGSM(sAfterSMSCAddress, cbAfterSMSCAddress, (LPSTR)pbGSMBytes, cbAfterSMSCAddress / 2 + 1, cbGSMBytes)) {
            hr = E_FAIL;
            goto Error;
        }
    } else {

    // Convert the whole message from GSM default HEX represention into GSM default
    pbGSMBytes = new BYTE[cbIn / 2 + 1];
    if (!pbGSMBytes) {
        hr = E_OUTOFMEMORY;
        goto Error;
    }
    if (!GSMHexToGSM(sIn, cbIn, (LPSTR)pbGSMBytes, cbIn / 2 + 1, cbGSMBytes)) {
        hr = E_FAIL;
        goto Error;
    }

    if (fPrependedSMSC)
    {
        // Grab the prepended SMSC address
        if (!ParseMsgAddress(pbGSMBytes, TRUE, rrmMsg.raSvcCtrAddress, cbParsed, FALSE)) {
            hr = E_FAIL;
            goto Error;
        }
        rrmMsg.dwParams |= RIL_PARAM_M_SVCCTRADDRESS;
    }

    }

    // Mask the bottom two bits to get the message type (GSM 03.40 section 9.2.3.1)
    bMsgType = *(pbGSMBytes + cbParsed) & 0x03;
    switch (bMsgType)
    {
        case 0x00:  // SMS-DELIVER or SMS-DELIVER-REPORT
            if (!fIncoming) {
                // We don't support SMS-DELIVER-REPORTs
                hr = E_FAIL;
                goto Error;
            }
            fRet = ParseDeliverMsg(pbGSMBytes + cbParsed, cbGSMBytes - cbParsed, rrmMsg);
            break;

        case 0x01:  // SMS-SUBMIT or SMS-SUBMIT-REPORT
            if (fIncoming) {
                // We don't support SMS-SUBMIT-REPORTs
                hr = E_FAIL;
                goto Error;
            }
            fRet = ParseSubmitMsg(pbGSMBytes + cbParsed, cbGSMBytes - cbParsed, rrmMsg);
            break;

        case 0x02:  // SMS-STATUS-REPORT or SMS_COMMAND
            if (fIncoming) {
                fRet = ParseStatusMsg(pbGSMBytes + cbParsed, cbGSMBytes - cbParsed, rrmMsg);
            } else {
                fRet = ParseCommandMsg(pbGSMBytes + cbParsed, cbGSMBytes - cbParsed, rrmMsg);
            }
            break;

        default:
            hr = E_FAIL;
            DEBUGMSG(ZONE_ERROR, (TEXT("RILDrv : E : ParseSMSMessage : Invalid Message Type\r\n")));
            goto Error;
    }

    if (!fRet) {
        DEBUGMSG(ZONE_ERROR, (TEXT("RILDrv : E : ParseSMSMessage : Failed\r\n")));
        hr = E_FAIL;
    }

Error:
    delete[] pbGSMBytes;
    return hr;
}


//
// Helper for setting RILMSGDCS language properties
//
static void SetDCSLanguageType(RILMSGDCS& rrmdDCS, DWORD dwAlphabet, DWORD dwLanguage)
{
    rrmdDCS.dwType = RIL_DCSTYPE_LANGUAGE;
    rrmdDCS.dwParams |= RIL_PARAM_MDCS_TYPE;

    rrmdDCS.dwAlphabet = dwAlphabet;
    rrmdDCS.dwParams |= RIL_PARAM_MDCS_ALPHABET;

    rrmdDCS.dwLanguage = dwLanguage;
    rrmdDCS.dwParams |= RIL_PARAM_MDCS_LANGUAGE;
}

//
// Set Data Coding Scheme of Incoming Cell Broadcast Message
// see GSM 03.38
//
static BOOL ParseCellBroadcastDCS(const BYTE bIn, RILMSGDCS& rrmdDCS, UINT& rcbLangInMsgBody)
{
    FUNCTION_TRACE(ParseCellBroadcastDCS);
    
    BOOL fRet = FALSE;

    rcbLangInMsgBody = 0;
    
    (void)memset(&rrmdDCS, 0x00, sizeof(RILMSGDCS));
    rrmdDCS.cbSize = sizeof(RILMSGDCS);

    switch (bIn & 0xf0)
    {
        case 0x00:
            SetDCSLanguageType(rrmdDCS, RIL_DCSALPHABET_DEFAULT, g_rgdwDCSLanguagesGroup1[bIn & 0x0f]);
            break;

        case 0x10:
            switch (bIn & 0x0f)
            {
                case 0x00:
                    // First 3 characters of message body contain language.
                    rcbLangInMsgBody = 3;

                    SetDCSLanguageType(rrmdDCS, RIL_DCSALPHABET_DEFAULT, RIL_DCSLANG_UNKNOWN);
                    break;

                case 0x01:
                    // First 2 characters of message body contain language.
                    rcbLangInMsgBody = 2;

                    SetDCSLanguageType(rrmdDCS, RIL_DCSALPHABET_UCS2, RIL_DCSLANG_UNKNOWN);
                    break;

                default:
                    SetDCSLanguageType(rrmdDCS, RIL_DCSALPHABET_DEFAULT, RIL_DCSLANG_UNKNOWN);
                    break;
            }
            break;

        case 0x20:
            if (0x00 == (bIn & 0x0f))
            {
                SetDCSLanguageType(rrmdDCS, RIL_DCSALPHABET_DEFAULT, g_rgdwDCSLanguagesGroup2[bIn & 0x0f]);
                break;
            }
            __fallthrough;

        case 0x30:
            SetDCSLanguageType(rrmdDCS, RIL_DCSALPHABET_DEFAULT, RIL_DCSLANG_UNKNOWN);
            break;

        case 0xf0:
            rrmdDCS.dwType = RIL_DCSTYPE_GENERAL;
            rrmdDCS.dwParams |= RIL_PARAM_MDCS_TYPE;

            if (bIn & 0x04)
            {
                rrmdDCS.dwAlphabet = RIL_DCSALPHABET_8BIT;
                rrmdDCS.dwParams |= RIL_PARAM_MDCS_ALPHABET;
            }
            else
            {
                rrmdDCS.dwAlphabet = RIL_DCSALPHABET_DEFAULT;
                rrmdDCS.dwParams |= RIL_PARAM_MDCS_ALPHABET;
            }
            
            switch (bIn & 0x03)
            {
                case 0x00:
                    // None
                    break;

                case 0x01:
                    rrmdDCS.dwMsgClass = RIL_DCSMSGCLASS_1;
                    rrmdDCS.dwParams |= RIL_PARAM_MDCS_MSGCLASS;
                    break;

                case 0x02:
                    rrmdDCS.dwMsgClass = RIL_DCSMSGCLASS_2;
                    rrmdDCS.dwParams |= RIL_PARAM_MDCS_MSGCLASS;
                    break;

                case 0x03:
                    rrmdDCS.dwMsgClass = RIL_DCSMSGCLASS_3;
                    rrmdDCS.dwParams |= RIL_PARAM_MDCS_MSGCLASS;
                    break;
            }
            break;

        default:
            if (bIn & 0x40)
            {
                rrmdDCS.dwType = RIL_DCSTYPE_GENERAL;
                rrmdDCS.dwParams |= RIL_PARAM_MDCS_TYPE;

                if (bIn & 0x20)
                {
                    rrmdDCS.dwFlags |= RIL_DCSFLAG_COMPRESSED;
                    rrmdDCS.dwParams |= RIL_PARAM_MDCS_FLAGS;
                }

                if (bIn & 0x10)
                {
                    switch (bIn & 0x03)
                    {
                        case 0x00:
                            rrmdDCS.dwMsgClass = RIL_DCSMSGCLASS_0;
                            rrmdDCS.dwParams |= RIL_PARAM_MDCS_MSGCLASS;
                            break;

                        case 0x01:
                            rrmdDCS.dwMsgClass = RIL_DCSMSGCLASS_1;
                            rrmdDCS.dwParams |= RIL_PARAM_MDCS_MSGCLASS;
                            break;

                        case 0x02:
                            rrmdDCS.dwMsgClass = RIL_DCSMSGCLASS_2;
                            rrmdDCS.dwParams |= RIL_PARAM_MDCS_MSGCLASS;
                            break;

                        case 0x03:
                            rrmdDCS.dwMsgClass = RIL_DCSMSGCLASS_3;
                            rrmdDCS.dwParams |= RIL_PARAM_MDCS_MSGCLASS;
                            break;
                    }
                }

                switch ((bIn >> 2) & 0x03)
                {
                    case 0x00:
                        rrmdDCS.dwAlphabet = RIL_DCSALPHABET_DEFAULT;
                        rrmdDCS.dwParams |= RIL_PARAM_MDCS_ALPHABET;
                        break;

                    case 0x01:
                        rrmdDCS.dwAlphabet = RIL_DCSALPHABET_8BIT;
                        rrmdDCS.dwParams |= RIL_PARAM_MDCS_ALPHABET;
                        break;

                    case 0x02:
                        rrmdDCS.dwAlphabet = RIL_DCSALPHABET_UCS2;
                        rrmdDCS.dwParams |= RIL_PARAM_MDCS_ALPHABET;
                        break;

                    case 0x03:
                        // Reserved... so use assume alphabet
                        rrmdDCS.dwAlphabet = RIL_DCSALPHABET_DEFAULT;
                        rrmdDCS.dwParams |= RIL_PARAM_MDCS_ALPHABET;
                        break;
                }
            }
            else
            {
                // All other cases are reserved and assumed to use default alphabet.
                SetDCSLanguageType(rrmdDCS, RIL_DCSALPHABET_DEFAULT, RIL_DCSLANG_UNKNOWN);
            }
            break;
    }


    return TRUE;
}


//
// Parses header information for 
//
static BOOL ParseCellBroadcastHeader(const BYTE* const pbIn, const UINT cbIn, RILMESSAGE& rrmMsg, UINT& rcbParsed)
{
    rcbParsed = 0;

    if (cbIn < CELLBROADCAST_HEADER_LENGTH)
    {
        return FALSE;
    }

    // Parse values from the first 2 octets (the serial number)
    WORD wSerialNumber                  = MAKEWORD(*(pbIn+1), *pbIn);
    rrmMsg.msgBcGeneral.dwGeoScope      = GEOSCOPE_FROM_SERIALNUMBER    (wSerialNumber);
    rrmMsg.msgBcGeneral.dwMsgCode       = MESSAGECODE_FROM_SERIALNUMBER (wSerialNumber);
    rrmMsg.msgBcGeneral.dwUpdateNumber  = UPDATENUMBER_FROM_SERIALNUMBER(wSerialNumber);

    // Parse the message ID
    rrmMsg.msgBcGeneral.dwID            = MAKEWORD(*(pbIn+3), *(pbIn+2));

    // Parse DCS info
    UINT cbLanguageInMessageBody = 0;
    if (!ParseCellBroadcastDCS(*(pbIn+4), rrmMsg.msgBcGeneral.rmdDataCoding, cbLanguageInMessageBody))
    {
        return FALSE;
    }

    // Parse page info
    BYTE bPageInfo = *(pbIn+5);
    rrmMsg.msgBcGeneral.dwTotalPages    = TOTALPAGES(bPageInfo);
    rrmMsg.msgBcGeneral.dwPageNumber    = PAGENUMBER(bPageInfo);

    if (rrmMsg.msgBcGeneral.dwTotalPages == 0 ||
        rrmMsg.msgBcGeneral.dwPageNumber == 0)
    {
        rrmMsg.msgBcGeneral.dwTotalPages = 1;
        rrmMsg.msgBcGeneral.dwPageNumber = 1;
    }

    rcbParsed = CELLBROADCAST_HEADER_LENGTH + cbLanguageInMessageBody;

    return TRUE;
}

HRESULT ParseCellBroadcastMessage(const LPCSTR sIn, const UINT cbIn, RILMESSAGE& rrmMsg)
{
    FUNCTION_TRACE(ParseCellBroadcastMessage);
    DEBUGCHK(NULL != sIn);
    DEBUGCHK(0 < cbIn);
    
    HRESULT hr = S_OK;
    BYTE* pbGSMBytes = NULL;
    UINT cbGSMBytes;
    UINT cbParsed = 0;

    // Zero out the message structure
    (void)memset(&rrmMsg, 0x00, sizeof(RILMESSAGE));
    rrmMsg.cbSize = sizeof(RILMESSAGE);

    // Convert the whole message from GSM default HEX represention into GSM default
    pbGSMBytes = new BYTE[cbIn / 2 + 1];
    if (!pbGSMBytes) {
        hr = E_OUTOFMEMORY;
        goto Error;
    }
    if (!GSMHexToGSM(sIn, cbIn, (LPSTR)pbGSMBytes, cbIn / 2 + 1, cbGSMBytes)) {
        hr = E_FAIL;
        goto Error;
    }

    // Parse the header information
    if (!ParseCellBroadcastHeader(pbGSMBytes, cbGSMBytes, rrmMsg, cbParsed))
    {
        hr = E_FAIL;
        goto Error;
    }

    // This is a cell broadcast message.
    rrmMsg.dwType = RIL_MSGTYPE_BC_GENERAL;

    // Copy the message body to the output structure
    rrmMsg.msgBcGeneral.cchMsgLength = min(cbGSMBytes - cbParsed, MAXLENGTH_MSG);
    if ( (cbParsed + rrmMsg.msgBcGeneral.cchMsgLength >= cbIn / 2 + 1) ||
         (rrmMsg.msgBcGeneral.cchMsgLength > sizeof(rrmMsg.msgBcGeneral.rgbMsg)) ) {
        hr = E_FAIL;
        goto Error;
    }
    memcpy(rrmMsg.msgBcGeneral.rgbMsg, pbGSMBytes + cbParsed, rrmMsg.msgBcGeneral.cchMsgLength);
    
    // We always get all the parameters for cell broadcast
    rrmMsg.dwParams = RIL_PARAM_M_ALL_BC_GENERAL;

Error:
    delete[] pbGSMBytes;
    return hr;
}


?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人福利视频网站| 日韩欧美aaaaaa| 91视频在线观看免费| 国产成人综合亚洲网站| 国产精品996| 国产91精品在线观看| 高清免费成人av| av色综合久久天堂av综合| 成人福利在线看| 91色视频在线| 在线视频国产一区| 欧美亚洲高清一区二区三区不卡| 色国产综合视频| 欧美精品粉嫩高潮一区二区| 91精品国产麻豆国产自产在线| 日韩午夜激情视频| 日韩一区二区三区在线| 欧美tickling挠脚心丨vk| 国产情人综合久久777777| 中文幕一区二区三区久久蜜桃| 国产精品区一区二区三区| 亚洲欧美一区二区久久| 亚洲第一激情av| 久久99蜜桃精品| 成人午夜短视频| 色素色在线综合| 欧美美女一区二区在线观看| 日韩欧美激情一区| 国产精品久久久99| 午夜精品一区二区三区免费视频| 美女任你摸久久| 国产成人综合网站| 欧美日精品一区视频| 日韩精品中文字幕一区 | 久久久久久夜精品精品免费| 国产视频911| 亚洲五码中文字幕| 黑人巨大精品欧美一区| 不卡的av电影| 欧美精品1区2区3区| 久久精品这里都是精品| 亚洲精品五月天| 九九热在线视频观看这里只有精品| 国产aⅴ综合色| 欧美日韩国产一区| 久久久久久久久久久黄色| 亚洲免费av网站| 国模大尺度一区二区三区| 色猫猫国产区一区二在线视频| 欧美一区二区高清| 亚洲视频一区在线| 韩国女主播成人在线观看| 91美女蜜桃在线| 日韩美女视频在线| 一区二区三区四区在线播放| 精品无码三级在线观看视频| 91丨九色丨国产丨porny| 精品免费视频.| 亚洲女性喷水在线观看一区| 国产一区二区三区四区五区美女| 一本色道久久综合亚洲精品按摩| 精品少妇一区二区三区在线视频| 亚洲欧美国产毛片在线| 国产老肥熟一区二区三区| 欧美撒尿777hd撒尿| 欧美高清在线精品一区| 青青草成人在线观看| 94色蜜桃网一区二区三区| 精品久久久久av影院| 香蕉乱码成人久久天堂爱免费| 99久久伊人久久99| 精品国产一区二区三区不卡| 亚洲电影中文字幕在线观看| 国产成人午夜精品5599| 欧美一区二区三区在线看| 亚洲一区在线视频观看| 成人黄色在线网站| 国产午夜精品理论片a级大结局 | 欧美在线一二三四区| 国产欧美视频一区二区| 美女被吸乳得到大胸91| 欧美图片一区二区三区| 亚洲日本一区二区| 粉嫩欧美一区二区三区高清影视| 欧美一级高清片在线观看| 亚洲国产一二三| 精品一区二区三区视频在线观看 | 久久国产尿小便嘘嘘尿| 日本韩国欧美一区| 亚洲久本草在线中文字幕| 成人激情文学综合网| 久久精品一区二区三区av| 久久超碰97人人做人人爱| 欧美一级在线观看| 蜜臀av在线播放一区二区三区| 精品国产3级a| 激情图片小说一区| 日韩欧美一区二区视频| 日本免费新一区视频| 在线综合视频播放| 亚洲国产va精品久久久不卡综合| 色8久久人人97超碰香蕉987| 亚洲人成亚洲人成在线观看图片| 波多野结衣视频一区| 中文字幕一区二| 色嗨嗨av一区二区三区| 亚洲自拍偷拍网站| 欧美性一二三区| 天使萌一区二区三区免费观看| 欧美天堂亚洲电影院在线播放| 伊人性伊人情综合网| 欧美手机在线视频| 日日夜夜精品视频免费| 91精品国产一区二区| 精品一区二区三区久久| 久久综合色综合88| 不卡的av网站| 夜夜精品视频一区二区| 精品视频一区二区不卡| 日韩黄色免费电影| 久久午夜免费电影| 成人h动漫精品| 亚洲色图欧洲色图| 欧美午夜电影一区| 蜜桃传媒麻豆第一区在线观看| 精品欧美乱码久久久久久1区2区| 国产成+人+日韩+欧美+亚洲| 日韩亚洲欧美一区| 国产91丝袜在线播放九色| 国产欧美日韩久久| 天天综合日日夜夜精品| 日一区二区三区| 石原莉奈在线亚洲二区| 欧美一卡2卡三卡4卡5免费| 激情六月婷婷综合| 国产精品久久久久久久午夜片| 91影视在线播放| 香蕉影视欧美成人| 久久精品一区二区三区四区| 91色综合久久久久婷婷| 免费一级欧美片在线观看| 国产精品视频九色porn| 欧美视频精品在线观看| 国产裸体歌舞团一区二区| 亚洲欧美日韩中文播放 | 国产精品久久久一本精品| 日本高清成人免费播放| 亚洲成人av一区二区三区| 国产亚洲精品aa| 欧美午夜精品久久久久久超碰| 精品一区二区三区香蕉蜜桃| 中文字幕一区二区三区色视频| 7777精品久久久大香线蕉| 国产成人亚洲综合a∨婷婷图片| 亚洲国产日韩在线一区模特| 欧美成人精品福利| 色综合久久综合网欧美综合网| 蜜臀久久久久久久| **性色生活片久久毛片| 日韩欧美一级在线播放| 一本大道综合伊人精品热热| 激情偷乱视频一区二区三区| 亚洲在线视频一区| 中文字幕精品—区二区四季| 91精品国产综合久久香蕉麻豆| 成人黄色av电影| 麻豆成人久久精品二区三区红| 一区二区免费视频| 久久久欧美精品sm网站| 4hu四虎永久在线影院成人| 成人av电影在线播放| 国产一区二区电影| 国产不卡视频在线播放| 日本中文一区二区三区| 亚洲精品成人少妇| 中文字幕一区二区三区av| 精品国产一区二区三区久久久蜜月| 欧美伊人精品成人久久综合97 | 欧美老女人在线| 99r精品视频| 国产mv日韩mv欧美| 九九久久精品视频| 日韩 欧美一区二区三区| 亚洲一区二区三区中文字幕在线| 国产精品久久久久久久久快鸭 | 精品一区二区影视| 午夜视频在线观看一区| 一区二区三区免费观看| 国产精品久久久一本精品| 国产视频不卡一区| 久久久精品国产免大香伊| 欧美精品一区二区三区久久久| 欧美福利视频一区| 欧美日韩免费高清一区色橹橹 | 日本大香伊一区二区三区| 菠萝蜜视频在线观看一区| 国产成人av电影在线| 国产一区二区三区av电影 | 成人国产电影网| 懂色av中文一区二区三区|