Work on shell

This commit is contained in:
2022-08-23 19:55:36 +02:00
parent 3ee1d725a5
commit 2316a1125f
8 changed files with 220 additions and 144 deletions

View File

@ -35,8 +35,9 @@
#ifdef __FreeBSD__
#define HAVE_SIN_LEN
#define HAVE_SIN6_LEN
#define HAVE_SIN_LEN 1
#define HAVE_SIN6_LEN 1
#define HAVE_SS_LEN 1
#endif
@ -68,7 +69,7 @@ extern int sock_getport(struct sockaddr *addr);
extern int sock_setport(struct sockaddr *addr, int port);
extern int sock_getbroadcastaddr(const struct sockaddr *addr,
struct sockaddr *broadcastaddr);
extern void sock_addrinit(struct sockaddr *addr, int type);
extern void sock_addrinit(struct sockaddr_storage *addr, int type);
extern int sock_set_dontfrag(int sock, int val);

View File

@ -4,19 +4,31 @@
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <sys/un.h>
void sock_addrinit(struct sockaddr *addr,int type)
#include "sock.h"
void sock_addrinit(struct sockaddr_storage *addr,int type)
{
int len;
switch (type){
case AF_INET:
memset(addr,0,sizeof(struct sockaddr_in));
addr->sa_family=type;
#ifdef HAVE_SIN_LEN
addr_sa_len=sizeof(struct sockaddr_in);
#endif
return;
len=sizeof(struct sockaddr_in);
break;
case AF_INET6:
len=sizeof(struct sockaddr_in6);
break;
case AF_UNIX:
len = sizeof(struct sockaddr_un);
break;
default:
len=0;
}
memset(addr,0,len);
addr->ss_family=type;
#ifdef HAVE_SS_LEN
addr->ss_len=len;
#endif
}