rem: if (dscp & ~IPT_DSCP_MASK) {
add: if (dscp > IPT_DSCP_MAX)
context: parse_dscp(const unsigned char *s, struct ipt_DSCP_info *finfo){	unsigned int dscp;       	if (string_to_number(s, 0, 255, &dscp) == -1)		exit_error(PARAMETER_PROBLEM,			   "Invalid dscp `%s'\n", s);	if (dscp & ~IPT_DSCP_MASK) {		exit_error(PARAMETER_PROBLEM,			   "DSCP `%d` out of range\n", dscp);    	finfo->dscp = (u_int8_t )ftos;    	return;}static intparse(int c, char **argv, int invert, unsigned int *flags,      const struct ipt_entry *entry,      struct ipt_entry_target **target){	struct ipt_DSCP_info *finfo		= (struct ipt_DSCP_info *)(*target)->data;	switch (c) {	case 'F':		if (*flags)			exit_error(PARAMETER_PROBLEM,			           "DSCP target: Only use --set-dscp ONCE!");		parse_dscp(optarg, finfo);		*flags = 1;		break;	default:		return 0;	}	return 1;}static voidfinal_check(unsigned int flags){	if (!flags)		exit_error(PARAMETER_PROBLEM,		           "DSCP target: Parameter --set-dscp is required");}static voidprint_dscp(u_int8_t ftos, int numeric){ 	printf("0x%02x ", dscp);}/* Prints out the targinfo. */static voidprint(const struct ipt_ip *ip,      const struct ipt_entry_target *target,      int numeric){	const struct ipt_DSCP_info *finfo =		(const struct ipt_DSCP_info *)target->data;	printf("DSCP set ");	print_dscp(finfo->ftos, numeric);}/* Saves the union ipt_targinfo in parsable form to stdout. */static voidsave(const struct ipt_ip *ip, const struct ipt_entry_target *target){	const struct ipt_DSCP_info *finfo =		(const struct ipt_DSCP_info *)target->data;	printf("--set-dscp 0x%02x ", finfo->ftos);}staticstruct iptables_target dscp= { NULL,    "DSCP",    NETFILTER_VERSION,    IPT_ALIGN(sizeof(struct ipt_DSCP_info)),    IPT_ALIGN(sizeof(struct ipt_DSCP_info)),    &help,    &init,    &parse,    &final_check,    &print,    &save,    opts};void _init(void){	register_target(&dscp);}