179e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh/* 279e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh * Copyright (C) 2009 The Android Open Source Project 379e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh * 479e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh * Licensed under the Apache License, Version 2.0 (the "License"); 579e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh * you may not use this file except in compliance with the License. 679e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh * You may obtain a copy of the License at 779e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh * 879e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh * http://www.apache.org/licenses/LICENSE-2.0 979e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh * 1079e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh * Unless required by applicable law or agreed to in writing, software 1179e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh * distributed under the License is distributed on an "AS IS" BASIS, 1279e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1379e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh * See the License for the specific language governing permissions and 1479e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh * limitations under the License. 1579e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh */ 1679e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh 1779e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh#ifndef __MTPD_H__ 1879e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh#define __MTPD_H__ 1979e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh 2079e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh/* The socket to the server. */ 2179e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yehextern int the_socket; 2279e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh 2379e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yehenum exit_code { 247b66d20359dd1c5586ecb1594d3ee929c5b42624Chia-chi Yeh SYSTEM_ERROR = 1, 257b66d20359dd1c5586ecb1594d3ee929c5b42624Chia-chi Yeh NETWORK_ERROR = 2, 267b66d20359dd1c5586ecb1594d3ee929c5b42624Chia-chi Yeh PROTOCOL_ERROR = 3, 277b66d20359dd1c5586ecb1594d3ee929c5b42624Chia-chi Yeh CHALLENGE_FAILED = 4, 287b66d20359dd1c5586ecb1594d3ee929c5b42624Chia-chi Yeh USER_REQUESTED = 5, 297b66d20359dd1c5586ecb1594d3ee929c5b42624Chia-chi Yeh REMOTE_REQUESTED = 6, 3079e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh PPPD_EXITED = 32, 3179e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh}; 3279e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh 3379e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yehenum log_level { 3479e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh DEBUG = 0, 3579e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh INFO = 1, 3679e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh WARNING = 2, 3779e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh ERROR = 3, 3879e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh FATAL = 4, 3979e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh LOG_MAX = 4, 4079e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh}; 4179e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh 4279e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yehvoid log_print(int level, char *format, ...); 4379e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yehvoid create_socket(int family, int type, char *server, char *port); 4479e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yehvoid start_pppd(int pppox); 4579e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh 4679e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh/* Each protocol must implement everything defined in this structure. Note that 4779e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh * timeout intervals are in milliseconds, where zero means forever. To indicate 4879e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh * an error, one should use a negative exit code such as -REMOTE_REQUESTED. */ 4979e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yehstruct protocol { 507b66d20359dd1c5586ecb1594d3ee929c5b42624Chia-chi Yeh /* The name of this protocol. */ 5179e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh char *name; 527b66d20359dd1c5586ecb1594d3ee929c5b42624Chia-chi Yeh /* The number of arguments. */ 537b66d20359dd1c5586ecb1594d3ee929c5b42624Chia-chi Yeh int arguments; 547b66d20359dd1c5586ecb1594d3ee929c5b42624Chia-chi Yeh /* The usage of the arguments. */ 5579e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh char *usage; 5679e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh /* Connect to the server and return the next timeout interval. */ 577b66d20359dd1c5586ecb1594d3ee929c5b42624Chia-chi Yeh int (*connect)(char **arguments); 5879e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh /* Process the incoming packet and return the next timeout interval. */ 5979e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh int (*process)(); 6079e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh /* Handle the timeout event and return the next timeout interval. */ 6179e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh int (*timeout)(); 6279e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh /* Handle the shutdown event. */ 6379e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh void (*shutdown)(); 6479e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh}; 6579e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh 6679e6232ffa3765d3352e01e2b7887b6425c7c655Chia-chi Yeh#endif /* __MTPD_H__ */ 67