12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- #include <stdlib.h>
- #include <stdio.h>
- #include <string.h>
- #include <assert.h>
- #include <unistd.h>
- #include <errno.h>
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <fcntl.h>
- #include <sys/socket.h>
- #include <sys/un.h>
- #include <faux/str.h>
- #include <faux/msg.h>
- #include <klish/ktp_session.h>
- int ktp_connect_unix(const char *sun_path)
- {
- int sock = -1;
- int opt = 1;
- struct sockaddr_un laddr = {};
- assert(sun_path);
- if (!sun_path)
- return -1;
- // Create socket
- if ((sock = socket(AF_UNIX, SOCK_STREAM, 0)) == -1)
- return -1;
- if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt))) {
- close(sock);
- return -1;
- }
- laddr.sun_family = AF_UNIX;
- strncpy(laddr.sun_path, sun_path, USOCK_PATH_MAX);
- laddr.sun_path[USOCK_PATH_MAX - 1] = '\0';
- // Connect to server
- if (connect(sock, (struct sockaddr *)&laddr, sizeof(laddr))) {
- close(sock);
- return -1;
- }
- return sock;
- }
- void ktp_disconnect(int fd)
- {
- if (fd < 0)
- return;
- close(fd);
- }
- int ktp_accept(int listen_sock)
- {
- int new_conn = -1;
- new_conn = accept(listen_sock, NULL, NULL);
- return new_conn;
- }
- faux_msg_t *ktp_msg_preform(ktp_cmd_e cmd, uint32_t status)
- {
- faux_msg_t *msg = NULL;
- msg = faux_msg_new(KTP_MAGIC, KTP_MAJOR, KTP_MINOR);
- assert(msg);
- if (!msg)
- return NULL;
- faux_msg_set_cmd(msg, cmd);
- faux_msg_set_status(msg, status);
- return msg;
- }
|