Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F142133485
D27882.id82586.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
14 KB
Referenced Files
None
Subscribers
None
D27882.id82586.diff
View Options
diff --git a/sys/netinet/libalias/alias.h b/sys/netinet/libalias/alias.h
--- a/sys/netinet/libalias/alias.h
+++ b/sys/netinet/libalias/alias.h
@@ -93,10 +93,10 @@
void LibAliasUninit(struct libalias *);
/* Packet Handling functions. */
-int LibAliasIn (struct libalias *, char *_ptr, int _maxpacketsize);
-int LibAliasOut(struct libalias *, char *_ptr, int _maxpacketsize);
-int LibAliasOutTry(struct libalias *, char *_ptr, int _maxpacketsize, int _create);
-int LibAliasUnaliasOut(struct libalias *, char *_ptr, int _maxpacketsize);
+int LibAliasIn (struct libalias *, void *_ptr, int _maxpacketsize);
+int LibAliasOut(struct libalias *, void *_ptr, int _maxpacketsize);
+int LibAliasOutTry(struct libalias *, void *_ptr, int _maxpacketsize, int _create);
+int LibAliasUnaliasOut(struct libalias *, void *_ptr, int _maxpacketsize);
/* Port and address redirection functions. */
@@ -119,9 +119,9 @@
unsigned char _proto);
/* Fragment Handling functions. */
-void LibAliasFragmentIn(struct libalias *, char *_ptr, char *_ptr_fragment);
-char *LibAliasGetFragment(struct libalias *, char *_ptr);
-int LibAliasSaveFragment(struct libalias *, char *_ptr);
+void LibAliasFragmentIn(struct libalias *, void *_ptr, void *_ptr_fragment);
+void *LibAliasGetFragment(struct libalias *, void *_ptr);
+int LibAliasSaveFragment(struct libalias *, void *_ptr);
/* Miscellaneous functions. */
int LibAliasCheckNewLink(struct libalias *);
diff --git a/sys/netinet/libalias/alias.c b/sys/netinet/libalias/alias.c
--- a/sys/netinet/libalias/alias.c
+++ b/sys/netinet/libalias/alias.c
@@ -274,9 +274,9 @@
static int IcmpAliasOut(struct libalias *, struct ip *, int create);
static int ProtoAliasIn(struct libalias *la, struct in_addr ip_src,
- struct in_addr *ip_dst, u_char ip_p, u_short *ip_sum);
-static int ProtoAliasOut(struct libalias *la, struct in_addr *ip_src,
- struct in_addr ip_dst, u_char ip_p, u_short *ip_sum,
+ struct ip *pip, u_char ip_p, u_short *ip_sum);
+static int ProtoAliasOut(struct libalias *la, struct ip *pip,
+ struct in_addr ip_dst, u_char ip_p, u_short *ip_sum,
int create);
static int UdpAliasIn(struct libalias *, struct ip *);
@@ -655,8 +655,8 @@
}
static int
-ProtoAliasIn(struct libalias *la, struct in_addr ip_src,
- struct in_addr *ip_dst, u_char ip_p, u_short *ip_sum)
+ProtoAliasIn(struct libalias *la, struct in_addr ip_src,
+ struct ip *pip, u_char ip_p, u_short *ip_sum)
{
/*
Handle incoming IP packets. The
@@ -671,7 +671,7 @@
if (la->packetAliasMode & PKT_ALIAS_PROXY_ONLY)
return (PKT_ALIAS_OK);
- lnk = FindProtoIn(la, ip_src, *ip_dst, ip_p);
+ lnk = FindProtoIn(la, ip_src, pip->ip_dst, ip_p);
if (lnk != NULL) {
struct in_addr original_address;
@@ -679,8 +679,8 @@
/* Restore original IP address */
DifferentialChecksum(ip_sum,
- &original_address, ip_dst, 2);
- *ip_dst = original_address;
+ &original_address, &pip->ip_dst, 2);
+ pip->ip_dst = original_address;
return (PKT_ALIAS_OK);
}
@@ -688,7 +688,7 @@
}
static int
-ProtoAliasOut(struct libalias *la, struct in_addr *ip_src,
+ProtoAliasOut(struct libalias *la, struct ip *pip,
struct in_addr ip_dst, u_char ip_p, u_short *ip_sum, int create)
{
/*
@@ -707,7 +707,7 @@
if (!create)
return (PKT_ALIAS_IGNORED);
- lnk = FindProtoOut(la, *ip_src, ip_dst, ip_p);
+ lnk = FindProtoOut(la, pip->ip_src, ip_dst, ip_p);
if (lnk != NULL) {
struct in_addr alias_address;
@@ -715,8 +715,8 @@
/* Change source address */
DifferentialChecksum(ip_sum,
- &alias_address, ip_src, 2);
- *ip_src = alias_address;
+ &alias_address, &pip->ip_src, 2);
+ pip->ip_src = alias_address;
return (PKT_ALIAS_OK);
}
@@ -1185,26 +1185,26 @@
*/
/* Local prototypes */
-static int FragmentIn(struct libalias *la, struct in_addr ip_src,
- struct in_addr *ip_dst, u_short ip_id, u_short *ip_sum);
-static int FragmentOut(struct libalias *, struct in_addr *ip_src,
+static int FragmentIn(struct libalias *la, struct in_addr ip_src,
+ struct ip *pip, u_short ip_id, u_short *ip_sum);
+static int FragmentOut(struct libalias *, struct ip *pip,
u_short *ip_sum);
static int
-FragmentIn(struct libalias *la, struct in_addr ip_src, struct in_addr *ip_dst,
+FragmentIn(struct libalias *la, struct in_addr ip_src, struct ip *pip,
u_short ip_id, u_short *ip_sum)
{
struct alias_link *lnk;
LIBALIAS_LOCK_ASSERT(la);
- lnk = FindFragmentIn2(la, ip_src, *ip_dst, ip_id);
+ lnk = FindFragmentIn2(la, ip_src, pip->ip_dst, ip_id);
if (lnk != NULL) {
struct in_addr original_address;
GetFragmentAddr(lnk, &original_address);
DifferentialChecksum(ip_sum,
- &original_address, ip_dst, 2);
- *ip_dst = original_address;
+ &original_address, &pip->ip_dst, 2);
+ pip->ip_dst = original_address;
return (PKT_ALIAS_OK);
}
@@ -1212,15 +1212,15 @@
}
static int
-FragmentOut(struct libalias *la, struct in_addr *ip_src, u_short *ip_sum)
+FragmentOut(struct libalias *la, struct ip *pip, u_short *ip_sum)
{
struct in_addr alias_address;
LIBALIAS_LOCK_ASSERT(la);
- alias_address = FindAliasAddress(la, *ip_src);
+ alias_address = FindAliasAddress(la, pip->ip_src);
DifferentialChecksum(ip_sum,
- &alias_address, ip_src, 2);
- *ip_src = alias_address;
+ &alias_address, &pip->ip_src, 2);
+ pip->ip_src = alias_address;
return (PKT_ALIAS_OK);
}
@@ -1238,7 +1238,7 @@
*/
int
-LibAliasSaveFragment(struct libalias *la, char *ptr)
+LibAliasSaveFragment(struct libalias *la, void *ptr)
{
int iresult;
struct alias_link *lnk;
@@ -1256,11 +1256,11 @@
return (iresult);
}
-char *
-LibAliasGetFragment(struct libalias *la, char *ptr)
+void *
+LibAliasGetFragment(struct libalias *la, void *ptr)
{
struct alias_link *lnk;
- char *fptr;
+ void *fptr;
struct ip *pip;
LIBALIAS_LOCK(la);
@@ -1278,10 +1278,10 @@
}
void
-LibAliasFragmentIn(struct libalias *la, char *ptr, /* Points to correctly
+LibAliasFragmentIn(struct libalias *la, void *ptr, /* Points to correctly
* de-aliased header
* fragment */
- char *ptr_fragment /* Points to fragment which must be
+ void *ptr_fragment /* Points to fragment which must be
* de-aliased */
)
{
@@ -1301,39 +1301,37 @@
/* Local prototypes */
static int
-LibAliasOutLocked(struct libalias *la, char *ptr,
+LibAliasOutLocked(struct libalias *la, struct ip *pip,
int maxpacketsize, int create);
static int
-LibAliasInLocked(struct libalias *la, char *ptr,
+LibAliasInLocked(struct libalias *la, struct ip *pip,
int maxpacketsize);
int
-LibAliasIn(struct libalias *la, char *ptr, int maxpacketsize)
+LibAliasIn(struct libalias *la, void *ptr, int maxpacketsize)
{
int res;
LIBALIAS_LOCK(la);
- res = LibAliasInLocked(la, ptr, maxpacketsize);
+ res = LibAliasInLocked(la, (struct ip *)ptr, maxpacketsize);
LIBALIAS_UNLOCK(la);
return (res);
}
static int
-LibAliasInLocked(struct libalias *la, char *ptr, int maxpacketsize)
+LibAliasInLocked(struct libalias *la, struct ip *pip, int maxpacketsize)
{
struct in_addr alias_addr;
- struct ip *pip;
int iresult;
if (la->packetAliasMode & PKT_ALIAS_REVERSE) {
la->packetAliasMode &= ~PKT_ALIAS_REVERSE;
- iresult = LibAliasOutLocked(la, ptr, maxpacketsize, 1);
+ iresult = LibAliasOutLocked(la, pip, maxpacketsize, 1);
la->packetAliasMode |= PKT_ALIAS_REVERSE;
goto getout;
}
HouseKeeping(la);
ClearCheckNewLink(la);
- pip = (struct ip *)ptr;
alias_addr = pip->ip_dst;
/* Defense against mangled packets */
@@ -1377,12 +1375,12 @@
if (error == 0)
iresult = PKT_ALIAS_OK;
else
- iresult = ProtoAliasIn(la, pip->ip_src,
- &pip->ip_dst, pip->ip_p, &pip->ip_sum);
+ iresult = ProtoAliasIn(la, pip->ip_src,
+ pip, pip->ip_p, &pip->ip_sum);
}
break;
default:
- iresult = ProtoAliasIn(la, pip->ip_src, &pip->ip_dst,
+ iresult = ProtoAliasIn(la, pip->ip_src, pip,
pip->ip_p, &pip->ip_sum);
break;
}
@@ -1399,7 +1397,7 @@
}
}
} else {
- iresult = FragmentIn(la, pip->ip_src, &pip->ip_dst, pip->ip_id,
+ iresult = FragmentIn(la, pip->ip_src, pip, pip->ip_id,
&pip->ip_sum);
}
@@ -1426,29 +1424,29 @@
#define UNREG_ADDR_CGN_UPPER 0x647fffff
int
-LibAliasOut(struct libalias *la, char *ptr, int maxpacketsize)
+LibAliasOut(struct libalias *la, void *ptr, int maxpacketsize)
{
int res;
LIBALIAS_LOCK(la);
- res = LibAliasOutLocked(la, ptr, maxpacketsize, 1);
+ res = LibAliasOutLocked(la, (struct ip *)ptr, maxpacketsize, 1);
LIBALIAS_UNLOCK(la);
return (res);
}
int
-LibAliasOutTry(struct libalias *la, char *ptr, int maxpacketsize, int create)
+LibAliasOutTry(struct libalias *la, void *ptr, int maxpacketsize, int create)
{
int res;
LIBALIAS_LOCK(la);
- res = LibAliasOutLocked(la, ptr, maxpacketsize, create);
+ res = LibAliasOutLocked(la, (struct ip *)ptr, maxpacketsize, create);
LIBALIAS_UNLOCK(la);
return (res);
}
static int
-LibAliasOutLocked(struct libalias *la, char *ptr, /* valid IP packet */
+LibAliasOutLocked(struct libalias *la, struct ip *pip, /* valid IP packet */
int maxpacketsize, /* How much the packet data may grow (FTP
* and IRC inline changes) */
int create /* Create new entries ? */
@@ -1456,17 +1454,15 @@
{
int iresult;
struct in_addr addr_save;
- struct ip *pip;
if (la->packetAliasMode & PKT_ALIAS_REVERSE) {
la->packetAliasMode &= ~PKT_ALIAS_REVERSE;
- iresult = LibAliasInLocked(la, ptr, maxpacketsize);
+ iresult = LibAliasInLocked(la, pip, maxpacketsize);
la->packetAliasMode |= PKT_ALIAS_REVERSE;
goto getout;
}
HouseKeeping(la);
ClearCheckNewLink(la);
- pip = (struct ip *)ptr;
/* Defense against mangled packets */
if (ntohs(pip->ip_len) > maxpacketsize
@@ -1532,17 +1528,17 @@
if (error == 0)
iresult = PKT_ALIAS_OK;
else
- iresult = ProtoAliasOut(la, &pip->ip_src,
+ iresult = ProtoAliasOut(la, pip,
pip->ip_dst, pip->ip_p, &pip->ip_sum, create);
}
break;
default:
- iresult = ProtoAliasOut(la, &pip->ip_src,
+ iresult = ProtoAliasOut(la, pip,
pip->ip_dst, pip->ip_p, &pip->ip_sum, create);
break;
}
} else {
- iresult = FragmentOut(la, &pip->ip_src, &pip->ip_sum);
+ iresult = FragmentOut(la, pip, &pip->ip_sum);
}
SetDefaultAliasAddress(la, addr_save);
@@ -1551,7 +1547,7 @@
}
int
-LibAliasUnaliasOut(struct libalias *la, char *ptr, /* valid IP packet */
+LibAliasUnaliasOut(struct libalias *la, void *ptr, /* valid IP packet */
int maxpacketsize /* for error checking */
)
{
diff --git a/sys/netinet/libalias/alias_db.c b/sys/netinet/libalias/alias_db.c
--- a/sys/netinet/libalias/alias_db.c
+++ b/sys/netinet/libalias/alias_db.c
@@ -1742,13 +1742,13 @@
}
void
-SetFragmentPtr(struct alias_link *lnk, char *fptr)
+SetFragmentPtr(struct alias_link *lnk, void *fptr)
{
lnk->data.frag_ptr = fptr;
}
void
-GetFragmentPtr(struct alias_link *lnk, char **fptr)
+GetFragmentPtr(struct alias_link *lnk, void **fptr)
{
*fptr = lnk->data.frag_ptr;
}
diff --git a/sys/netinet/libalias/alias_local.h b/sys/netinet/libalias/alias_local.h
--- a/sys/netinet/libalias/alias_local.h
+++ b/sys/netinet/libalias/alias_local.h
@@ -322,8 +322,8 @@
u_char _proto, u_char _align);
void GetFragmentAddr(struct alias_link *_lnk, struct in_addr *_src_addr);
void SetFragmentAddr(struct alias_link *_lnk, struct in_addr _src_addr);
-void GetFragmentPtr(struct alias_link *_lnk, char **_fptr);
-void SetFragmentPtr(struct alias_link *_lnk, char *fptr);
+void GetFragmentPtr(struct alias_link *_lnk, void **_fptr);
+void SetFragmentPtr(struct alias_link *_lnk, void *fptr);
void SetStateIn(struct alias_link *_lnk, int _state);
void SetStateOut(struct alias_link *_lnk, int _state);
int GetStateIn (struct alias_link *_lnk);
diff --git a/sys/netinet/libalias/alias_proxy.c b/sys/netinet/libalias/alias_proxy.c
--- a/sys/netinet/libalias/alias_proxy.c
+++ b/sys/netinet/libalias/alias_proxy.c
@@ -382,7 +382,7 @@
#define OPTION_LEN_BYTES 8
#define OPTION_LEN_INT16 4
#define OPTION_LEN_INT32 2
- u_char option[OPTION_LEN_BYTES];
+ _Alignas(_Alignof(u_short)) u_char option[OPTION_LEN_BYTES];
#ifdef LIBALIAS_DEBUG
fprintf(stdout, " ip cksum 1 = %x\n", (u_int) IpChecksum(pip));
diff --git a/sys/netinet/libalias/libalias.3 b/sys/netinet/libalias/libalias.3
--- a/sys/netinet/libalias/libalias.3
+++ b/sys/netinet/libalias/libalias.3
@@ -25,7 +25,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd December 25, 2013
+.Dd January 1, 2020
.Dt LIBALIAS 3
.Os
.Sh NAME
@@ -311,7 +311,7 @@
implementation.
.Pp
.Ft int
-.Fn LibAliasIn "struct libalias *" "char *buffer" "int maxpacketsize"
+.Fn LibAliasIn "struct libalias *" "void *buffer" "int maxpacketsize"
.Bd -ragged -offset indent
An incoming packet coming from a remote machine to the local network is
de-aliased by this function.
@@ -352,7 +352,7 @@
.Ed
.Pp
.Ft int
-.Fn LibAliasOut "struct libalias *" "char *buffer" "int maxpacketsize"
+.Fn LibAliasOut "struct libalias *" "void *buffer" "int maxpacketsize"
.Bd -ragged -offset indent
An outgoing packet coming from the local network to a remote machine is
aliased by this function.
@@ -770,7 +770,7 @@
once the header fragment has been resolved.
.Pp
.Ft int
-.Fn LibAliasSaveFragment "struct libalias *" "char *ptr"
+.Fn LibAliasSaveFragment "struct libalias *" "void *ptr"
.Bd -ragged -offset indent
When
.Fn LibAliasIn
@@ -794,8 +794,8 @@
if there was an error.
.Ed
.Pp
-.Ft char *
-.Fn LibAliasGetFragment "struct libalias *" "char *buffer"
+.Ft void *
+.Fn LibAliasGetFragment "struct libalias *" "void *buffer"
.Bd -ragged -offset indent
This function can be used to retrieve fragment pointers saved by
.Fn LibAliasSaveFragment .
@@ -816,7 +816,7 @@
.Ed
.Pp
.Ft void
-.Fn LibAliasFragmentIn "struct libalias *" "char *header" "char *fragment"
+.Fn LibAliasFragmentIn "struct libalias *" "void *header" "void *fragment"
.Bd -ragged -offset indent
When a fragment is retrieved with
.Fn LibAliasGetFragment ,
@@ -896,7 +896,7 @@
.Ed
.Pp
.Ft int
-.Fn LibAliasUnaliasOut "struct libalias *" "char *buffer" "int maxpacketsize"
+.Fn LibAliasUnaliasOut "struct libalias *" "void *buffer" "int maxpacketsize"
.Bd -ragged -offset indent
An outgoing packet, which has already been aliased,
has its private address/port information restored by this function.
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Jan 17, 8:36 AM (46 m, 12 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27686530
Default Alt Text
D27882.id82586.diff (14 KB)
Attached To
Mode
D27882: libalias: Fix -Wcast-align compiler warnings
Attached
Detach File
Event Timeline
Log In to Comment