Webserver+3d print
cyclone_tcp/ppp/lcp.h
- Committer:
- Sergunb
- Date:
- 2017-02-04
- Revision:
- 0:8918a71cdbe9
File content as of revision 0:8918a71cdbe9:
/** * @file lcp.h * @brief LCP (PPP Link Control Protocol) * * @section License * * Copyright (C) 2010-2017 Oryx Embedded SARL. All rights reserved. * * This file is part of CycloneTCP Open. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * @author Oryx Embedded SARL (www.oryx-embedded.com) * @version 1.7.6 **/ #ifndef _LCP_H #define _LCP_H //Dependencies #include "core/net.h" #include "ppp/ppp.h" /** * @brief LCP option types **/ typedef enum { LCP_OPTION_MRU = 1, ///<Maximum-Receive-Unit LCP_OPTION_ACCM = 2, ///<Async-Control-Character-Map LCP_OPTION_AUTH_PROTOCOL = 3, ///<Authentication-Protocol LCP_OPTION_QUALITY_PROTOCOL = 4, ///<Quality-Protocol LCP_OPTION_MAGIC_NUMBER = 5, ///<Magic-Number LCP_OPTION_PFC = 7, ///<Protocol-Field-Compression LCP_OPTION_ACFC = 8 ///<Address-and-Control-Field-Compression } LcpOptionType; //CodeWarrior or Win32 compiler? #if defined(__CWCC__) || defined(_WIN32) #pragma pack(push, 1) #endif /** * @brief Maximum-Receive-Unit option **/ typedef __start_packed struct { uint8_t type; //0 uint8_t length; //1 uint16_t mru; //2-3 } __end_packed LcpMruOption; /** * @brief Async-Control-Character-Map option **/ typedef __start_packed struct { uint8_t type; //0 uint8_t length; //1 uint32_t accm; //2-5 } __end_packed LcpAccmOption; /** * @brief Authentication-Protocol option **/ typedef __start_packed struct { uint8_t type; //0 uint8_t length; //1 uint16_t protocol; //2-3 uint8_t data[]; //4 } __end_packed LcpAuthProtocolOption; /** * @brief Quality-Protocol option **/ typedef __start_packed struct { uint8_t type; //0 uint8_t length; //1 uint16_t protocol; //2-3 uint8_t data[]; //4 } __end_packed LcpQualityProtocolOption; /** * @brief Magic-Number option **/ typedef __start_packed struct { uint8_t type; //0 uint8_t length; //1 uint32_t magicNumber; //2-5 } __end_packed LcpMagicNumberOption; /** * @brief Protocol-Field-Compression option **/ typedef __start_packed struct { uint8_t type; //0 uint8_t length; //1 } __end_packed LcpPfcOption; /** * @brief Address-and-Control-Field-Compression option **/ typedef __start_packed struct { uint8_t type; //0 uint8_t length; //1 } __end_packed LcpAcfcOption; //CodeWarrior or Win32 compiler? #if defined(__CWCC__) || defined(_WIN32) #pragma pack(pop) #endif //LCP FSM events error_t lcpOpen(PppContext *context); error_t lcpClose(PppContext *context); void lcpTick(PppContext *context); void lcpProcessPacket(PppContext *context, const PppPacket *packet, size_t length); error_t lcpProcessConfigureReq(PppContext *context, const PppConfigurePacket *configureReqPacket); error_t lcpProcessConfigureAck(PppContext *context, const PppConfigurePacket *configureAckPacket); error_t lcpProcessConfigureNak(PppContext *context, const PppConfigurePacket *configureNakPacket); error_t lcpProcessConfigureReject(PppContext *context, const PppConfigurePacket *configureRejPacket); error_t lcpProcessTerminateReq(PppContext *context, const PppTerminatePacket *terminateReqPacket); error_t lcpProcessTerminateAck(PppContext *context, const PppTerminatePacket *terminateAckPacket); error_t lcpProcessCodeRej(PppContext *context, const PppCodeRejPacket *codeRejPacket); error_t lcpProcessProtocolRej(PppContext *context, const PppProtocolRejPacket *protocolRejPacket); error_t lcpProcessEchoReq(PppContext *context, const PppEchoPacket *echoReqPacket); error_t lcpProcessEchoRep(PppContext *context, const PppEchoPacket *echoRepPacket); error_t lcpProcessDiscardReq(PppContext *context, const PppDiscardReqPacket *discardReqPacket); error_t lcpProcessUnknownCode(PppContext *context, const PppPacket *packet); error_t lcpProcessUnknownProtocol(PppContext *context, uint16_t protocol, const uint8_t *information, size_t length); //LCP FSM callback functions void lcpThisLayerUp(PppContext *context); void lcpThisLayerDown(PppContext *context); void lcpThisLayerStarted(PppContext *context); void lcpThisLayerFinished(PppContext *context); void lcpInitRestartCount(PppContext *context, uint_t value); void lcpZeroRestartCount(PppContext *context); error_t lcpSendConfigureReq(PppContext *context); error_t lcpSendConfigureAck(PppContext *context, const PppConfigurePacket *configureReqPacket); error_t lcpSendConfigureNak(PppContext *context, const PppConfigurePacket *configureReqPacket); error_t lcpSendConfigureRej(PppContext *context, const PppConfigurePacket *configureReqPacket); error_t lcpSendTerminateReq(PppContext *context); error_t lcpSendTerminateAck(PppContext *context, const PppTerminatePacket *terminateReqPacket); error_t lcpSendCodeRej(PppContext *context, const PppPacket *packet); error_t lcpSendEchoRep(PppContext *context, const PppEchoPacket *echoReqPacket); //LCP options checking error_t lcpParseOption(PppContext *context, PppOption *option, size_t inPacketLen, PppConfigurePacket *outPacket); error_t lcpParseMruOption(PppContext *context, LcpMruOption *option, PppConfigurePacket *outPacket); error_t lcpParseAccmOption(PppContext *context, LcpAccmOption *option, PppConfigurePacket *outPacket); error_t lcpParseAuthProtocolOption(PppContext *context, LcpAuthProtocolOption *option, PppConfigurePacket *outPacket); error_t lcpParseMagicNumberOption(PppContext *context, LcpMagicNumberOption *option, PppConfigurePacket *outPacket); error_t lcpParsePfcOption(PppContext *context, LcpPfcOption *option, PppConfigurePacket *outPacket); error_t lcpParseAcfcOption(PppContext *context, LcpAcfcOption *option, PppConfigurePacket *outPacket); #endif