if (strncmp("mode=blink&", NULL, 5)) {
You are checking to see if 5 characters of a hardcoded string are NULL. Why, you already know the answer to that question.
char *name =strtok(NULL, "mode=blink&");
So, the delimiters are 'm', 'o', 'd', 'e', '=', 'b', 'l', 'i', 'n', 'k', and '&'. Does that really make sense?
char *type =strtok(NULL, "rate=");
Here, the delimiters are 'r', 'a', 't', 'e', and '='. The appearance of any one of the letters will define the end of the token, and will be removed from the string. Is that what you really want?
Please, at least try to compile code before you post it.