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