FreeBSD Bugzilla – Attachment 215431 Details for
Bug 247129
[PATCH] Fix some compiler warnings in netinet alias module
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Alternate patch for sys/netinet/libalias/alias.c
alias.diff.2 (text/plain), 9.45 KB, created by
nikethmurali
on 2020-06-10 23:10:58 UTC
(
hide
)
Description:
Alternate patch for sys/netinet/libalias/alias.c
Filename:
MIME Type:
Creator:
nikethmurali
Created:
2020-06-10 23:10:58 UTC
Size:
9.45 KB
patch
obsolete
>Index: alias.c >=================================================================== >--- alias.c (revision 361967) >+++ alias.c (working copy) >@@ -189,6 +189,12 @@ > > static void TcpMonitorOut(u_char, struct alias_link *); > >+/* Local struct */ >+struct updatable_fields { >+ int mode; >+ struct in_addr addr; >+ u_short chksum; >+}; > > static void > TcpMonitorIn(u_char th_flags, struct alias_link *lnk) >@@ -279,10 +285,10 @@ > static int IcmpAliasOut2(struct libalias *, struct ip *); > 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, >+static struct updatable_fields ProtoAliasIn(struct libalias *la, struct in_addr ip_src, >+ struct in_addr ip_dst, u_char ip_p, u_short ip_sum); >+static struct updatable_fields ProtoAliasOut(struct libalias *la, struct in_addr ip_src, >+ struct in_addr ip_dst, u_char ip_p, u_short ip_sum, > int create); > > static int UdpAliasIn(struct libalias *, struct ip *); >@@ -443,7 +449,8 @@ > IcmpAliasIn(struct libalias *la, struct ip *pip) > { > struct icmp *ic; >- int dlen, iresult; >+ uint16_t dlen; >+ int iresult; > > LIBALIAS_LOCK_ASSERT(la); > >@@ -665,9 +672,9 @@ > return (iresult); > } > >-static int >+static struct updatable_fields > ProtoAliasIn(struct libalias *la, struct in_addr ip_src, >- struct in_addr *ip_dst, u_char ip_p, u_short *ip_sum) >+ struct in_addr ip_dst, u_char ip_p, u_short ip_sum) > { > /* > Handle incoming IP packets. The >@@ -676,31 +683,37 @@ > machine. > */ > struct alias_link *lnk; >+ struct updatable_fields ret = {(PKT_ALIAS_IGNORED),ip_dst,ip_sum}; > > LIBALIAS_LOCK_ASSERT(la); > /* Return if proxy-only mode is enabled */ > if (la->packetAliasMode & PKT_ALIAS_PROXY_ONLY) >- return (PKT_ALIAS_OK); >+ return ret; > >- lnk = FindProtoIn(la, ip_src, *ip_dst, ip_p); >+ lnk = FindProtoIn(la, ip_src, ip_dst, ip_p); > if (lnk != NULL) { > struct in_addr original_address; >+ u_short chksum; > > original_address = GetOriginalAddress(lnk); >+ chksum = ip_sum; > > /* Restore original IP address */ >- DifferentialChecksum(ip_sum, >- &original_address, ip_dst, 2); >- *ip_dst = original_address; >+ DifferentialChecksum(&ip_sum, >+ &original_address, &ip_dst, 2); > >- return (PKT_ALIAS_OK); >+ ret.mode = (PKT_ALIAS_OK); >+ ret.addr = original_address; >+ ret.chksum = chksum; >+ return ret; > } >- return (PKT_ALIAS_IGNORED); >+ ret.mode = (PKT_ALIAS_IGNORED); >+ return ret; > } > >-static int >-ProtoAliasOut(struct libalias *la, struct in_addr *ip_src, >- struct in_addr ip_dst, u_char ip_p, u_short *ip_sum, int create) >+static struct updatable_fields >+ProtoAliasOut(struct libalias *la, struct in_addr ip_src, >+ struct in_addr ip_dst, u_char ip_p, u_short ip_sum, int create) > { > /* > Handle outgoing IP packets. The >@@ -708,30 +721,39 @@ > the source IP address of the packet. > */ > struct alias_link *lnk; >+ struct updatable_fields ret = {(PKT_ALIAS_OK),ip_src,ip_sum}; >+ > > LIBALIAS_LOCK_ASSERT(la); > > /* Return if proxy-only mode is enabled */ > if (la->packetAliasMode & PKT_ALIAS_PROXY_ONLY) >- return (PKT_ALIAS_OK); >+ return ret; > >- if (!create) >- return (PKT_ALIAS_IGNORED); >+ if (!create) { >+ ret.mode = (PKT_ALIAS_IGNORED); >+ return ret; >+ } > >- lnk = FindProtoOut(la, *ip_src, ip_dst, ip_p); >+ lnk = FindProtoOut(la, ip_src, ip_dst, ip_p); > if (lnk != NULL) { > struct in_addr alias_address; >+ u_short chksum; > > alias_address = GetAliasAddress(lnk); >+ chksum = ip_sum; > > /* Change source address */ >- DifferentialChecksum(ip_sum, >- &alias_address, ip_src, 2); >- *ip_src = alias_address; >+ DifferentialChecksum(&chksum, >+ &alias_address, &ip_src, 2); > >- return (PKT_ALIAS_OK); >+ ret.mode = (PKT_ALIAS_OK); >+ ret.addr = alias_address; >+ ret.chksum = chksum; >+ return ret; > } >- return (PKT_ALIAS_IGNORED); >+ ret.mode = (PKT_ALIAS_IGNORED); >+ return ret; > } > > >@@ -740,7 +762,7 @@ > { > struct udphdr *ud; > struct alias_link *lnk; >- int dlen; >+ uint16_t dlen; > > LIBALIAS_LOCK_ASSERT(la); > >@@ -839,7 +861,8 @@ > u_short dest_port; > u_short proxy_server_port; > int proxy_type; >- int dlen, error; >+ uint16_t dlen; >+ int error; > > LIBALIAS_LOCK_ASSERT(la); > >@@ -944,7 +967,7 @@ > { > struct tcphdr *tc; > struct alias_link *lnk; >- int dlen; >+ uint16_t dlen; > > LIBALIAS_LOCK_ASSERT(la); > >@@ -1069,7 +1092,8 @@ > static int > TcpAliasOut(struct libalias *la, struct ip *pip, int maxpacketsize, int create) > { >- int dlen, proxy_type, error; >+ uint16_t dlen; >+ int proxy_type, error; > u_short dest_port; > u_short proxy_server_port; > struct in_addr dest_address; >@@ -1202,44 +1226,45 @@ > */ > > /* 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, >- u_short *ip_sum); >+static struct updatable_fields FragmentIn(struct libalias *la, struct in_addr ip_src, >+ struct in_addr ip_dst, u_short ip_id, u_short ip_sum); >+static struct updatable_fields FragmentOut(struct libalias *, struct in_addr ip_src, >+ u_short ip_sum); > >-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 struct updatable_fields >+FragmentIn(struct libalias *la, struct in_addr ip_src, struct in_addr ip_dst, >+ u_short ip_id, u_short ip_sum) > { > struct alias_link *lnk; >+ struct updatable_fields ret = {(PKT_ALIAS_UNRESOLVED_FRAGMENT),ip_src,ip_sum}; > > LIBALIAS_LOCK_ASSERT(la); >- lnk = FindFragmentIn2(la, ip_src, *ip_dst, ip_id); >+ lnk = FindFragmentIn2(la, ip_src, 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; >+ DifferentialChecksum(&ip_sum, >+ &original_address, &ip_dst, 2); > >- return (PKT_ALIAS_OK); >+ ret.mode = PKT_ALIAS_OK; >+ return ret; > } >- return (PKT_ALIAS_UNRESOLVED_FRAGMENT); >+ return ret; > } > >-static int >-FragmentOut(struct libalias *la, struct in_addr *ip_src, u_short *ip_sum) >+static struct updatable_fields >+FragmentOut(struct libalias *la, struct in_addr ip_src, u_short ip_sum) > { > struct in_addr alias_address; > > LIBALIAS_LOCK_ASSERT(la); >- alias_address = FindAliasAddress(la, *ip_src); >- DifferentialChecksum(ip_sum, >- &alias_address, ip_src, 2); >- *ip_src = alias_address; >+ alias_address = FindAliasAddress(la, ip_src); >+ DifferentialChecksum(&ip_sum, >+ &alias_address, &ip_src, 2); > >- return (PKT_ALIAS_OK); >+ struct updatable_fields ret = {(PKT_ALIAS_OK),ip_src,ip_sum}; >+ return ret; > } > > >@@ -1346,6 +1371,7 @@ > struct in_addr alias_addr; > struct ip *pip; > int iresult; >+ struct updatable_fields proto_result; > > if (la->packetAliasMode & PKT_ALIAS_REVERSE) { > la->packetAliasMode &= ~PKT_ALIAS_REVERSE; >@@ -1398,15 +1424,23 @@ > error = find_handler(IN, IP, la, pip, &ad); > if (error == 0) > iresult = PKT_ALIAS_OK; >- else >- iresult = ProtoAliasIn(la, pip->ip_src, >- &pip->ip_dst, pip->ip_p, &pip->ip_sum); >+ else { >+ proto_result = ProtoAliasIn(la, pip->ip_src, >+ pip->ip_dst, pip->ip_p, pip->ip_sum); >+ pip->ip_dst = proto_result.addr; >+ pip->ip_sum = proto_result.chksum; >+ iresult = proto_result.mode; >+ } > } > break; >- default: >- iresult = ProtoAliasIn(la, pip->ip_src, &pip->ip_dst, >- pip->ip_p, &pip->ip_sum); >+ default: { >+ proto_result = ProtoAliasIn(la, pip->ip_src, >+ pip->ip_dst, pip->ip_p, pip->ip_sum); >+ pip->ip_dst = proto_result.addr; >+ pip->ip_sum = proto_result.chksum; >+ iresult = proto_result.mode; > break; >+ } > } > > if (ntohs(pip->ip_off) & IP_MF) { >@@ -1421,8 +1455,11 @@ > } > } > } else { >- iresult = FragmentIn(la, pip->ip_src, &pip->ip_dst, pip->ip_id, >- &pip->ip_sum); >+ proto_result = FragmentIn(la, pip->ip_src, >+ pip->ip_dst, pip->ip_id, pip->ip_sum); >+ pip->ip_dst = proto_result.addr; >+ pip->ip_sum = proto_result.chksum; >+ iresult = proto_result.mode; > } > > getout: >@@ -1481,6 +1518,7 @@ > int iresult; > struct in_addr addr_save; > struct ip *pip; >+ struct updatable_fields proto_result; > > if (la->packetAliasMode & PKT_ALIAS_REVERSE) { > la->packetAliasMode &= ~PKT_ALIAS_REVERSE; >@@ -1555,18 +1593,29 @@ > error = find_handler(OUT, IP, la, pip, &ad); > if (error == 0) > iresult = PKT_ALIAS_OK; >- else >- iresult = ProtoAliasOut(la, &pip->ip_src, >- pip->ip_dst, pip->ip_p, &pip->ip_sum, create); >+ else { >+ proto_result = ProtoAliasOut(la, pip->ip_src, >+ pip->ip_dst, pip->ip_p, pip->ip_sum, create); >+ pip->ip_src = proto_result.addr; >+ pip->ip_sum = proto_result.chksum; >+ iresult = proto_result.mode; >+ } > } > break; >- default: >- iresult = ProtoAliasOut(la, &pip->ip_src, >- pip->ip_dst, pip->ip_p, &pip->ip_sum, create); >+ default: { >+ proto_result = ProtoAliasOut(la, pip->ip_src, >+ pip->ip_dst, pip->ip_p, pip->ip_sum, create); >+ pip->ip_src = proto_result.addr; >+ pip->ip_sum = proto_result.chksum; >+ iresult = proto_result.mode; >+ } > break; > } > } else { >- iresult = FragmentOut(la, &pip->ip_src, &pip->ip_sum); >+ proto_result = FragmentOut(la, pip->ip_src, pip->ip_sum); >+ pip->ip_src = proto_result.addr; >+ pip->ip_sum = proto_result.chksum; >+ iresult = proto_result.mode; > } > > SetDefaultAliasAddress(la, addr_save);
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 247129
:
215410
| 215431