mirror of https://github.com/wb2osz/direwolf.git
				
				
				
			All filter inspect 63rd party paylof #428
This commit is contained in:
		
							parent
							
								
									858749628f
								
							
						
					
					
						commit
						30a904e50e
					
				| 
						 | 
					@ -200,6 +200,8 @@ int pfilter (int from_chan, int to_chan, char *filter, packet_t pp, int is_aprs)
 | 
				
			||||||
	pfstate_t pfstate;
 | 
						pfstate_t pfstate;
 | 
				
			||||||
	char *p;
 | 
						char *p;
 | 
				
			||||||
	int result;
 | 
						int result;
 | 
				
			||||||
 | 
						char * infop = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	assert (from_chan >= 0 && from_chan <= MAX_CHANS);
 | 
						assert (from_chan >= 0 && from_chan <= MAX_CHANS);
 | 
				
			||||||
	assert (to_chan >= 0 && to_chan <= MAX_CHANS);
 | 
						assert (to_chan >= 0 && to_chan <= MAX_CHANS);
 | 
				
			||||||
| 
						 | 
					@ -231,6 +233,19 @@ int pfilter (int from_chan, int to_chan, char *filter, packet_t pp, int is_aprs)
 | 
				
			||||||
	  }
 | 
						  }
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (void) ax25_get_info (pp, (unsigned char **)(&infop));
 | 
				
			||||||
 | 
						assert (infop != NULL);
 | 
				
			||||||
 | 
						if (*infop == '}') {
 | 
				
			||||||
 | 
							// We have a 3d party packet, dig inside it to get the actual type.
 | 
				
			||||||
 | 
							packet_t pp_payload = ax25_from_text ((char*)infop+1, 0);
 | 
				
			||||||
 | 
							if (pp_payload == NULL) {
 | 
				
			||||||
 | 
								print_error (&pfstate, "Invalid third party payload\n");
 | 
				
			||||||
 | 
								return (0);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return pfilter(from_chan, to_chan, filter, pp_payload, is_aprs);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	pfstate.pp = pp;
 | 
						pfstate.pp = pp;
 | 
				
			||||||
	pfstate.is_aprs = is_aprs;
 | 
						pfstate.is_aprs = is_aprs;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -869,19 +884,6 @@ static int filt_t (pfstate_t *pf)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	assert (infop != NULL);
 | 
						assert (infop != NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if(*infop == '}') {
 | 
					 | 
				
			||||||
		// We have a 3d party packet, dig inside it to get the actual type.
 | 
					 | 
				
			||||||
		packet_t pp_payload = ax25_from_text ((char*)infop+1, 0);
 | 
					 | 
				
			||||||
		if (pp_payload == NULL) {
 | 
					 | 
				
			||||||
			print_error (pf, "Invalid third party payload\n");
 | 
					 | 
				
			||||||
			return (0);
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		memset (src, 0, sizeof(src));
 | 
					 | 
				
			||||||
		ax25_get_addr_with_ssid (pp_payload, AX25_SOURCE, src);
 | 
					 | 
				
			||||||
		(void) ax25_get_info (pp_payload, (unsigned char **)(&infop));
 | 
					 | 
				
			||||||
		ax25_delete(pp_payload);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	for (f = pf->token_str + 2; *f != '\0'; f++) {
 | 
						for (f = pf->token_str + 2; *f != '\0'; f++) {
 | 
				
			||||||
	  switch (*f) {
 | 
						  switch (*f) {
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue