master-auth.h revision 27712ff41adb9564e946a3f392c90da918c8a2e1
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina/* Major version changes are not backwards compatible,
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina minor version numbers can be ignored. */
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina/* Authentication client process's cookie size */
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina/* LOGIN_MAX_INBUF_SIZE should be based on this. Keep this large enough so that
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina LOGIN_MAX_INBUF_SIZE will be 1024+2 bytes. This is because IMAP ID command's
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina values may be max. 1024 bytes plus 2 for "" quotes. (Although it could be
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina even double of that when value is full of \" quotes, but for now lets not
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina make it too easy to waste memory..) */
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina#define MASTER_AUTH_MAX_DATA_SIZE (1024 + 128 + 33 + 2)
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina "Internal error occurred. Refer to server log for more information."
e880949305cee3aca79441fe6113a9d79e7c98f2Jakub Hrozek /* Connection has TLS compression enabled */
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina/* Authentication request. File descriptor may be sent along with the
769347ad4d35d43488eb98f980143495b0db415dStef Walter /* Request tag. Reply is sent back using same tag. */
769347ad4d35d43488eb98f980143495b0db415dStef Walter unsigned int tag;
769347ad4d35d43488eb98f980143495b0db415dStef Walter /* Authentication process, authentication ID and auth cookie. */
769347ad4d35d43488eb98f980143495b0db415dStef Walter unsigned int auth_id;
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina /* Local and remote IPs of the connection. The file descriptor
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina itself may be a local socketpair. */
769347ad4d35d43488eb98f980143495b0db415dStef Walter /* request follows this many bytes of client input */
769347ad4d35d43488eb98f980143495b0db415dStef Walter /* inode of the transferred fd. verified just to be sure that the
769347ad4d35d43488eb98f980143495b0db415dStef Walter correct fd is mapped to the correct struct. */
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina /* tag=0 are notifications from master */
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina unsigned int tag;
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov /* PID of the post-login mail process handling this connection */
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina/* reply=NULL if the auth lookup was cancelled due to some error */
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březinatypedef void master_auth_callback_t(const struct master_auth_reply *reply,
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březinamaster_auth_init(struct master_service *service, const char *path);
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březinavoid master_auth_deinit(struct master_auth **auth);
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina/* Send an authentication request. The fd contains the file descriptor to
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina transfer, or -1 if no fd is wanted to be transferred. Returns tag which can
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov be used to abort the request (ie. ignore the reply from master).
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov request->tag is ignored. */
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březinavoid master_auth_request(struct master_auth *auth, int fd,
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březina const unsigned char *data,
2827b0d03f7b6bafa504d22a5d7ca39cbda048b3Pavel Březinavoid master_auth_request_abort(struct master_auth *auth, unsigned int tag);