- /* get port */
- /* ToDo: handle overflow */
- if (sscanf(delim, ":%hu", port) != 1) {
- cegw_errno = CEGW_ERR_PORT;
- return -1;
+ ptr = nptr+1; /* hop behind the ',' */
+ nptr = strchr(ptr, ','); /* update exit condition */
+
+ if (sscanf(ptr, "%x:%x",
+ &rfilter[numfilter].can_id,
+ &rfilter[numfilter].can_mask) == 2) {
+ rfilter[numfilter].can_mask &= ~CAN_ERR_FLAG;
+ numfilter++;
+ } else if (sscanf(ptr, "%x~%x",
+ &rfilter[numfilter].can_id,
+ &rfilter[numfilter].can_mask) == 2) {
+ rfilter[numfilter].can_id |= CAN_INV_FILTER;
+ rfilter[numfilter].can_mask &= ~CAN_ERR_FLAG;
+ numfilter++;
+ } else if (sscanf(ptr, "#%x", err_mask) != 1) {
+ fprintf(stderr, "filter parsing failed");
+ exit(1);
+ }