mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05:00 
			
		
		
		
	module-rtp-sap: get source.ip from network interface if not supplied
This commit is contained in:
		
							parent
							
								
									6581d4ee2a
								
							
						
					
					
						commit
						0fc1112c6d
					
				
					 1 changed files with 16 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -1472,8 +1472,23 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args)
 | 
			
		|||
	impl->cleanup_interval = pw_properties_get_uint32(impl->props,
 | 
			
		||||
			"sap.cleanup.sec", DEFAULT_CLEANUP_SEC);
 | 
			
		||||
 | 
			
		||||
	if ((str = pw_properties_get(props, "source.ip")) == NULL)
 | 
			
		||||
	if ((str = pw_properties_get(props, "source.ip")) == NULL) {
 | 
			
		||||
		str = DEFAULT_SOURCE_IP;
 | 
			
		||||
		if (impl->ifname) {
 | 
			
		||||
			int fd = socket(AF_INET, SOCK_DGRAM, 0);
 | 
			
		||||
			if (fd >= 0) {
 | 
			
		||||
				struct ifreq req;
 | 
			
		||||
				spa_zero(req);
 | 
			
		||||
				req.ifr_addr.sa_family = AF_INET;
 | 
			
		||||
				snprintf(req.ifr_name, sizeof(req.ifr_name), "%s", impl->ifname);
 | 
			
		||||
				res = ioctl(fd, SIOCGIFADDR, &req);
 | 
			
		||||
				if (res < 0)
 | 
			
		||||
					pw_log_warn("SIOCGIFADDR %s failed: %m", impl->ifname);
 | 
			
		||||
				str = inet_ntoa(((struct sockaddr_in *)&req.ifr_addr)->sin_addr);
 | 
			
		||||
				close(fd);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	if ((res = parse_address(str, port, &impl->src_addr, &impl->src_len)) < 0) {
 | 
			
		||||
		pw_log_error("invalid source.ip %s: %s", str, spa_strerror(res));
 | 
			
		||||
		goto out;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue