const u_char *data, int length, const u_char *rcvsig);
#endif
-static void print_tcp_rst_data(netdissect_options *, register const u_char *sp, u_int length);
-static void print_tcp_fastopen_option(netdissect_options *ndo, register const u_char *cp,
+static void print_tcp_rst_data(netdissect_options *, const u_char *sp, u_int length);
+static void print_tcp_fastopen_option(netdissect_options *ndo, const u_char *cp,
u_int datalen, int exp);
#define MAX_RST_DATA_LEN 30
static int
tcp_cksum(netdissect_options *ndo,
- register const struct ip *ip,
- register const struct tcphdr *tp,
- register u_int len)
+ const struct ip *ip,
+ const struct tcphdr *tp,
+ u_int len)
{
return nextproto4_cksum(ndo, ip, (const uint8_t *)tp, len, len,
IPPROTO_TCP);
static int
tcp6_cksum(netdissect_options *ndo,
- register const struct ip6_hdr *ip6,
- register const struct tcphdr *tp,
- register u_int len)
+ const struct ip6_hdr *ip6,
+ const struct tcphdr *tp,
+ u_int len)
{
return nextproto6_cksum(ndo, ip6, (const uint8_t *)tp, len, len,
IPPROTO_TCP);
void
tcp_print(netdissect_options *ndo,
- register const u_char *bp, register u_int length,
- register const u_char *bp2, int fragmented)
+ const u_char *bp, u_int length,
+ const u_char *bp2, int fragmented)
{
- register const struct tcphdr *tp;
- register const struct ip *ip;
- register u_char flags;
- register u_int hlen;
- register char ch;
+ const struct tcphdr *tp;
+ const struct ip *ip;
+ u_char flags;
+ u_int hlen;
+ char ch;
uint16_t sport, dport, win, urp;
uint32_t seq, ack, thseq, thack;
u_int utoval;
uint16_t magic;
- register int rev;
- register const struct ip6_hdr *ip6;
+ int rev;
+ const struct ip6_hdr *ip6;
tp = (const struct tcphdr *)bp;
ip = (const struct ip *)bp2;
return;
}
- sport = EXTRACT_BE_U_2(&tp->th_sport);
- dport = EXTRACT_BE_U_2(&tp->th_dport);
+ sport = EXTRACT_BE_U_2(tp->th_sport);
+ dport = EXTRACT_BE_U_2(tp->th_dport);
if (ip6) {
- if (ip6->ip6_nxt == IPPROTO_TCP) {
+ if (EXTRACT_U_1(ip6->ip6_nxt) == IPPROTO_TCP) {
ND_PRINT((ndo, "%s.%s > %s.%s: ",
ip6addr_string(ndo, &ip6->ip6_src),
tcpport_string(ndo, sport),
return;
}
- seq = EXTRACT_BE_U_4(&tp->th_seq);
- ack = EXTRACT_BE_U_4(&tp->th_ack);
- win = EXTRACT_BE_U_2(&tp->th_win);
- urp = EXTRACT_BE_U_2(&tp->th_urp);
+ seq = EXTRACT_BE_U_4(tp->th_seq);
+ ack = EXTRACT_BE_U_4(tp->th_ack);
+ win = EXTRACT_BE_U_2(tp->th_win);
+ urp = EXTRACT_BE_U_2(tp->th_urp);
if (ndo->ndo_qflag) {
ND_PRINT((ndo, "tcp %d", length - hlen));
*/
rev = 0;
if (ip6) {
- register struct tcp_seq_hash6 *th;
+ struct tcp_seq_hash6 *th;
struct tcp_seq_hash6 *tcp_seq_hash;
const void *src, *dst;
struct tha6 tha;
thseq = th->seq;
thack = th->ack;
} else {
- register struct tcp_seq_hash *th;
+ struct tcp_seq_hash *th;
struct tcp_seq_hash *tcp_seq_hash;
struct tha tha;
uint16_t sum, tcp_sum;
if (IP_V(ip) == 4) {
- if (ND_TTEST2(tp->th_sport, length)) {
+ if (ND_TTEST_LEN(tp->th_sport, length)) {
sum = tcp_cksum(ndo, ip, tp, length);
- tcp_sum = EXTRACT_BE_U_2(&tp->th_sum);
+ tcp_sum = EXTRACT_BE_U_2(tp->th_sum);
ND_PRINT((ndo, ", cksum 0x%04x", tcp_sum));
if (sum != 0)
ND_PRINT((ndo, " (correct)"));
}
} else if (IP_V(ip) == 6 && ip6->ip6_plen) {
- if (ND_TTEST2(tp->th_sport, length)) {
+ if (ND_TTEST_LEN(tp->th_sport, length)) {
sum = tcp6_cksum(ndo, ip6, tp, length);
- tcp_sum = EXTRACT_BE_U_2(&tp->th_sum);
+ tcp_sum = EXTRACT_BE_U_2(tp->th_sum);
ND_PRINT((ndo, ", cksum 0x%04x", tcp_sum));
if (sum != 0)
* Handle any options.
*/
if (hlen > sizeof(*tp)) {
- register const u_char *cp;
- register u_int i, opt, datalen;
- register u_int len;
+ const u_char *cp;
+ u_int i, opt, datalen;
+ u_int len;
hlen -= sizeof(*tp);
cp = (const u_char *)tp + sizeof(*tp);
datalen = 0;
/* Bail if "l" bytes of data are not left or were not captured */
-#define LENCHECK(l) { if ((l) > hlen) goto bad; ND_TCHECK2(*cp, l); }
+#define LENCHECK(l) { if ((l) > hlen) goto bad; ND_TCHECK_LEN(cp, l); }
ND_PRINT((ndo, "%s", tok2str(tcp_option_values, "unknown-%u", opt)));
* to NFS print routines.
*/
uint32_t fraglen;
- register const struct sunrpc_msg *rp;
+ const struct sunrpc_msg *rp;
enum sunrpc_msg_type direction;
fraglen = EXTRACT_BE_U_4(bp) & 0x7FFFFFFF;
static void
print_tcp_rst_data(netdissect_options *ndo,
- register const u_char *sp, u_int length)
+ const u_char *sp, u_int length)
{
int c;
- ND_PRINT((ndo, ND_TTEST2(*sp, length) ? " [RST" : " [!RST"));
+ ND_PRINT((ndo, ND_TTEST_LEN(sp, length) ? " [RST" : " [!RST"));
if (length > MAX_RST_DATA_LEN) {
length = MAX_RST_DATA_LEN; /* can use -X for longer */
ND_PRINT((ndo, "+")); /* indicate we truncate */
}
static void
-print_tcp_fastopen_option(netdissect_options *ndo, register const u_char *cp,
+print_tcp_fastopen_option(netdissect_options *ndo, const u_char *cp,
u_int datalen, int exp)
{
u_int i;
MD5_Update(&ctx, (const char *)&ip->ip_dst, sizeof(ip->ip_dst));
MD5_Update(&ctx, (const char *)&zero_proto, sizeof(zero_proto));
MD5_Update(&ctx, (const char *)&ip->ip_p, sizeof(ip->ip_p));
- tlen = EXTRACT_BE_U_2(&ip->ip_len) - IP_HL(ip) * 4;
+ tlen = EXTRACT_BE_U_2(ip->ip_len) - IP_HL(ip) * 4;
tlen = htons(tlen);
MD5_Update(&ctx, (const char *)&tlen, sizeof(tlen));
} else if (IP_V(ip) == 6) {
ip6 = (const struct ip6_hdr *)ip;
MD5_Update(&ctx, (const char *)&ip6->ip6_src, sizeof(ip6->ip6_src));
MD5_Update(&ctx, (const char *)&ip6->ip6_dst, sizeof(ip6->ip6_dst));
- len32 = htonl(EXTRACT_BE_U_2(&ip6->ip6_plen));
+ len32 = htonl(EXTRACT_BE_U_2(ip6->ip6_plen));
MD5_Update(&ctx, (const char *)&len32, sizeof(len32));
nxt = 0;
MD5_Update(&ctx, (const char *)&nxt, sizeof(nxt));
* Step 2: Update MD5 hash with TCP header, excluding options.
* The TCP checksum must be set to zero.
*/
- savecsum = tp1.th_sum;
- tp1.th_sum = 0;
+ memcpy(&savecsum, tp1.th_sum, sizeof(savecsum));
+ memset(tp1.th_sum, 0, sizeof(tp1.th_sum));
MD5_Update(&ctx, (const char *)&tp1, sizeof(struct tcphdr));
- tp1.th_sum = savecsum;
+ memcpy(tp1.th_sum, &savecsum, sizeof(tp1.th_sum));
/*
* Step 3: Update MD5 hash with TCP segment data, if present.
*/