00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00024 #include "config.h"
00025
00026 #include <scalestack/kernel/module.h>
00027 #include <scalestack/network/local/local.h>
00028
00029 #include <cstring>
00030 #include <netdb.h>
00031 #include <sys/socket.h>
00032 #include <sys/types.h>
00033 #include <sys/un.h>
00034
00035 namespace scalestack
00036 {
00037 namespace network
00038 {
00039 namespace local
00040 {
00041
00042 void set_address(struct addrinfo& addrinfo,
00043 struct sockaddr_un& sockaddr,
00044 int socket_type,
00045 const std::string& socket)
00046 {
00047 memset(&addrinfo, 0, sizeof(addrinfo));
00048 addrinfo.ai_family = AF_UNIX;
00049 addrinfo.ai_socktype = socket_type;
00050 addrinfo.ai_addr = reinterpret_cast<struct sockaddr*>(&sockaddr);
00051 addrinfo.ai_addrlen = sizeof(sockaddr);
00052
00053 memset(&sockaddr, 0, sizeof(sockaddr));
00054 sockaddr.sun_family = AF_UNIX;
00055 strncpy(sockaddr.sun_path, socket.c_str(), sizeof(sockaddr.sun_path) - 1);
00056 }
00057
00058 }
00059 }
00060 }
00061
00062 SCALESTACK_KERNEL_MODULE(NULL, NULL, NULL, NULL, NULL);