Lines Matching refs:pcrx
244 static void pppDrop(PPPControlRx *pcrx);
245 static void pppInProc(PPPControlRx *pcrx, u_char *s, int l);
246 static void pppFreeCurrentInputPacket(PPPControlRx *pcrx);
1521 PPPControlRx *pcrx = arg;
1523 while (lcp_phase[pcrx->pd] != PHASE_DEAD) {
1524 count = sio_read(pcrx->fd, pcrx->rxbuf, PPPOS_RX_BUFSIZE);
1526 pppInProc(pcrx, pcrx->rxbuf, count);
1729 pppFreeCurrentInputPacket(PPPControlRx *pcrx)
1731 if (pcrx->inHead != NULL) {
1732 if (pcrx->inTail && (pcrx->inTail != pcrx->inHead)) {
1733 pbuf_free(pcrx->inTail);
1735 pbuf_free(pcrx->inHead);
1736 pcrx->inHead = NULL;
1738 pcrx->inTail = NULL;
1745 pppDrop(PPPControlRx *pcrx)
1747 if (pcrx->inHead != NULL) {
1749 PPPDEBUG(LOG_INFO, ("pppDrop: %d:%.*H\n", pcrx->inHead->len, min(60, pcrx->inHead->len * 2), pcrx->inHead->payload));
1751 PPPDEBUG(LOG_INFO, ("pppDrop: pbuf len=%d, addr %p\n", pcrx->inHead->len, (void*)pcrx->inHead));
1753 pppFreeCurrentInputPacket(pcrx);
1755 vj_uncompress_err(&pppControl[pcrx->pd].vjComp);
1759 snmp_inc_ifindiscards(&pppControl[pcrx->pd].netif);
1781 pppInProc(PPPControlRx *pcrx, u_char *s, int l)
1788 PPPDEBUG(LOG_DEBUG, ("pppInProc[%d]: got %d bytes\n", pcrx->pd, l));
1793 escaped = ESCAPE_P(pcrx->inACCM, curChar);
1803 pcrx->inEscaped = 1;
1807 if (pcrx->inState <= PDADDRESS) {
1810 } else if (pcrx->inState < PDDATA) {
1813 pcrx->pd, pcrx->inState));
1815 pppDrop(pcrx);
1817 } else if (pcrx->inFCS != PPP_GOODFCS) {
1820 pcrx->pd, pcrx->inFCS, pcrx->inProtocol));
1823 pppDrop(pcrx);
1828 if(pcrx->inTail->len >= 2) {
1829 pcrx->inTail->len -= 2;
1831 pcrx->inTail->tot_len = pcrx->inTail->len;
1832 if (pcrx->inTail != pcrx->inHead) {
1833 pbuf_cat(pcrx->inHead, pcrx->inTail);
1836 pcrx->inTail->tot_len = pcrx->inTail->len;
1837 if (pcrx->inTail != pcrx->inHead) {
1838 pbuf_cat(pcrx->inHead, pcrx->inTail);
1841 pbuf_realloc(pcrx->inHead, pcrx->inHead->tot_len - 2);
1845 inp = pcrx->inHead;
1847 pcrx->inHead = NULL;
1848 pcrx->inTail = NULL;
1851 PPPDEBUG(LOG_ERR, ("pppInProc[%d]: tcpip_callback() failed, dropping packet\n", pcrx->pd));
1854 snmp_inc_ifindiscards(&pppControl[pcrx->pd].netif);
1862 pcrx->inFCS = PPP_INITFCS;
1863 pcrx->inState = PDADDRESS;
1864 pcrx->inEscaped = 0;
1869 ("pppInProc[%d]: Dropping ACCM char <%d>\n", pcrx->pd, curChar));
1874 if (pcrx->inEscaped) {
1875 pcrx->inEscaped = 0;
1880 switch(pcrx->inState) {
1891 pcrx->inFCS = PPP_INITFCS;
1896 pcrx->inState = PDCONTROL;
1904 pcrx->inState = PDPROTOCOL1;
1910 ("pppInProc[%d]: Invalid control <%d>\n", pcrx->pd, curChar));
1911 pcrx->inState = PDSTART;
1918 pcrx->inProtocol = curChar;
1919 pcrx->inState = PDDATA;
1921 pcrx->inProtocol = (u_int)curChar << 8;
1922 pcrx->inState = PDPROTOCOL2;
1926 pcrx->inProtocol |= curChar;
1927 pcrx->inState = PDDATA;
1931 if (pcrx->inTail == NULL || pcrx->inTail->len == PBUF_POOL_BUFSIZE) {
1932 if (pcrx->inTail != NULL) {
1933 pcrx->inTail->tot_len = pcrx->inTail->len;
1934 if (pcrx->inTail != pcrx->inHead) {
1935 pbuf_cat(pcrx->inHead, pcrx->inTail);
1937 pcrx->inTail = NULL;
1946 PPPDEBUG(LOG_ERR, ("pppInProc[%d]: NO FREE MBUFS!\n", pcrx->pd));
1948 pppDrop(pcrx);
1949 pcrx->inState = PDSTART; /* Wait for flag sequence. */
1952 if (pcrx->inHead == NULL) {
1955 pih->unit = pcrx->pd;
1956 pih->proto = pcrx->inProtocol;
1960 pcrx->inHead = nextNBuf;
1962 pcrx->inTail = nextNBuf;
1965 ((u_char*)pcrx->inTail->payload)[pcrx->inTail->len++] = curChar;
1970 pcrx->inFCS = PPP_FCS(pcrx->inFCS, curChar);