uid_sock.h
上传用户:allwinjm
上传日期:2021-08-29
资源大小:99k
文件大小:2k
源码类别:

Internet/IE编程

开发平台:

Unix_Linux

  1. /************************************************************************ 
  2.  * RSTP library - Rapid Spanning Tree (802.1t, 802.1w) 
  3.  * Copyright (C) 2001-2003 Optical Access 
  4.  * Author: Alex Rozin 
  5.  * 
  6.  * This file is part of RSTP library. 
  7.  * 
  8.  * RSTP library is free software; you can redistribute it and/or modify it 
  9.  * under the terms of the GNU Lesser General Public License as published by the 
  10.  * Free Software Foundation; version 2.1 
  11.  * 
  12.  * RSTP library is distributed in the hope that it will be useful, but 
  13.  * WITHOUT ANY WARRANTY; without even the implied warranty of 
  14.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser 
  15.  * General Public License for more details. 
  16.  * 
  17.  * You should have received a copy of the GNU Lesser General Public License 
  18.  * along with RSTP library; see the file COPYING.  If not, write to the Free 
  19.  * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 
  20.  * 02111-1307, USA. 
  21.  **********************************************************************/
  22. #ifndef _UID_SOCKET_H__ 
  23. #define _UID_SOCKET_H__
  24. /* Socket API */
  25. #include        <sys/socket.h>  /* basic socket definitions */
  26. #include        <netinet/in.h>
  27. #include        <linux/un.h>              /* for Unix domain sockets */
  28. #define UID_REPL_PATH   "/tmp/UidSocketFile"
  29. typedef struct sockaddr SA;
  30. #define SOCKET_NAME_LENGTH 108
  31. #define SIZE_OF_ADDRESS sizeof(struct sockaddr_un)
  32. typedef enum {
  33.   UID_BIND_AS_CLIENT,
  34.   UID_BIND_AS_SERVER
  35. } TYPE_OF_BINDING;
  36. typedef char        UID_SOCK_ID[SOCKET_NAME_LENGTH];
  37. typedef struct{
  38.   int           sock_fd;
  39.   struct sockaddr_un    clientAddr;
  40.   struct sockaddr_un    serverAddr; // Only for socket of UID_BIND_AS_CLIENT
  41.   UID_SOCK_ID       socket_id;
  42.   TYPE_OF_BINDING   binding;
  43. } UID_SOCKET_T;
  44. #define MESSAGE_SIZE        2048
  45. int UiD_SocketInit(UID_SOCKET_T* sock,
  46.             UID_SOCK_ID id,
  47.             TYPE_OF_BINDING binding);
  48. int UiD_SocketRecvfrom (UID_SOCKET_T* sock,
  49.             void* msg_buffer,
  50.             int buffer_size,
  51.             UID_SOCKET_T* sock_4_reply);
  52. int UiD_SocketSendto (UID_SOCKET_T* sock,
  53.             void* msg_buffer,
  54.             int buffer_size);
  55. int UiD_SocketClose(UID_SOCKET_T* sock);
  56. int UiD_SocketSetReadTimeout (UID_SOCKET_T* s, int timeout);
  57. int
  58. UiD_SocketCompare (UID_SOCKET_T* s, UID_SOCKET_T* t);
  59. #define GET_FILE_DESCRIPTOR(sock) (((UID_SOCKET_T*)sock)->sock_fd)
  60. #endif /* _UID_SOCKET_H__ */