Hi, the new clang complains when variables might unintentionally switch from a positive to a negative number. This happens on the MULTICAST flag which sets the uppermost bit.
../../../../net/if.h:#define IFF_MULTICAST 0x8000 /* supports multicast */ Thus if_flags = IFF_MULTICAST would switch from the positive 0x8000 to something negative. The same happens in the ipoption struct. What should we do? Disable the warning or simply switch the variables to being unsigned? Keep note that this diff is untested, even though I wouldn't expect anything bad to happen by that change... Patrick diff --git a/sys/net/if_var.h b/sys/net/if_var.h index 702fc5539c1..e254744dac8 100644 --- a/sys/net/if_var.h +++ b/sys/net/if_var.h @@ -126,7 +126,7 @@ struct ifnet { /* and the entries */ #define if_carpdev if_carp_ptr.carp_d unsigned int if_index; /* numeric abbreviation for this if */ short if_timer; /* time 'til if_watchdog called */ - short if_flags; /* up/down, broadcast, etc. */ + unsigned short if_flags; /* up/down, broadcast, etc. */ int if_xflags; /* extra softnet flags */ struct if_data if_data; /* stats and other data about if */ u_int32_t if_hardmtu; /* maximum MTU device supports */ diff --git a/sys/netinet/ip_var.h b/sys/netinet/ip_var.h index 7d1663dc8b3..cabb364cdc4 100644 --- a/sys/netinet/ip_var.h +++ b/sys/netinet/ip_var.h @@ -91,7 +91,7 @@ struct ipstat { struct ipoption { struct in_addr ipopt_dst; /* first-hop dst if source routed */ - int8_t ipopt_list[MAX_IPOPTLEN]; /* options proper */ + u_int8_t ipopt_list[MAX_IPOPTLEN]; /* options proper */ }; #ifdef _KERNEL