PageRenderTime 48ms CodeModel.GetById 22ms RepoModel.GetById 1ms app.codeStats 0ms

/include/socket.h

https://github.com/karlpilkington/tapip
C Header | 64 lines | 55 code | 8 blank | 1 comment | 0 complexity | bc22899b3ebf9d73d732a292a9556ca1 MD5 | raw file
  1. #ifndef __SOCKET_H
  2. #define __SOCKET_H
  3. #include "wait.h"
  4. enum socket_state {
  5. SS_UNCONNECTED = 1,
  6. SS_BIND,
  7. SS_LISTEN,
  8. SS_CONNECTING,
  9. SS_CONNECTED,
  10. SS_MAX
  11. };
  12. enum sock_type {
  13. SOCK_STREAM = 1,
  14. SOCK_DGRAM,
  15. SOCK_RAW,
  16. SOCK_MAX
  17. };
  18. enum socket_family {
  19. AF_INET = 1
  20. };
  21. struct socket;
  22. struct sock_addr;
  23. /* protocol dependent socket apis */
  24. struct socket_ops {
  25. int (*socket)(struct socket *, int);
  26. int (*close)(struct socket *);
  27. int (*accept)(struct socket *, struct socket *, struct sock_addr *);
  28. int (*listen)(struct socket *, int);
  29. int (*bind)(struct socket *, struct sock_addr *);
  30. int (*connect)(struct socket *, struct sock_addr *);
  31. int (*read)(struct socket *, void *, int);
  32. int (*write)(struct socket *, void *, int);
  33. int (*send)(struct socket *, void *, int, struct sock_addr *);
  34. struct pkbuf *(*recv)(struct socket *);
  35. };
  36. struct socket {
  37. unsigned int state;
  38. unsigned int family; /* socket family: always AF_INET */
  39. unsigned int type; /* l4 protocol type: stream, dgram, raw */
  40. struct tapip_wait sleep;
  41. struct socket_ops *ops;
  42. struct sock *sk;
  43. int refcnt; /* refer to linux file::f_count */
  44. };
  45. extern struct socket *_socket(int, int, int);
  46. extern int _listen(struct socket *, int);
  47. extern void _close(struct socket *);
  48. extern int _bind(struct socket *, struct sock_addr *);
  49. extern struct socket *_accept(struct socket *, struct sock_addr *);
  50. extern int _send(struct socket *, void *, int, struct sock_addr *);
  51. extern int _connect(struct socket *, struct sock_addr *);
  52. extern int _read(struct socket *, void *, int);
  53. extern int _write(struct socket *, void *, int);
  54. extern struct pkbuf *_recv(struct socket *);
  55. extern void socket_init(void);
  56. #endif /* socket.h */