[Serusers] Some patches for integration [actual patches]

Maxim Sobolev sobomax at FreeBSD.org
Thu Jan 9 16:36:19 CET 2003


Forgot to mention that those patches also slightly change install target,
so that it doesn't rewrite old (and probably customised) version if it
exists.

-Maxim

On Wed, Jan 08, 2003 at 11:08:35PM +0200, Maxim Sobolev wrote:
> OOPS, forgot to attach the patch. Doing it now.
> 
> -Maxim
> 
> On Wed, Jan 08, 2003 at 11:02:29PM +0200, Maxim Sobolev wrote:
> > Folks,
> > 
> > Attached please find several patches for ser 0.8.10. They do the following:
> > 
> > 1. Removes hardcoded `/usr/local' from Makefiles and replaces it with
> > LOCALBASE variable setable in the top Makefile.defs. This should make
> > life of packagers easier.
> > 
> > 2. Allows to override PREFIX variable with something else from environment.
> > 
> > 3. Adds support for FreeBSD doc/man directories layout.
> > 
> > 4. Adds some missed -I's into radius modules.
> > 
> > 5. Fixes radius modules to use the same symbolic avp names as in dictionary.
> > 
> > 6. Adds support for recording source port in msg structure and adds it
> > in "Noisy feedback". This should be extremely useful for debugging various
> > SIP&NAT scenarios and later could be re-used to implement `rport' support
> > described in my previous message.
> > 
> > It would be nice to have those patches integrated into the next release.
> > 
> > Thanks!
> > 
> > -Maxim
> > _______________________________________________
> > Serusers mailing list
> > serusers at lists.iptel.org
> > http://lists.iptel.org/mailman/listinfo/serusers

> --- modules/jabber/Makefile.orig	Mon Nov 11 23:34:53 2002
> +++ modules/jabber/Makefile	Wed Jan  8 22:39:46 2003
> @@ -8,7 +8,7 @@
>  auto_gen=
>  NAME=jabber.so
>  # expat.h location
> -DEFS+=-I/usr/local/include
> -LIBS=-L/usr/local/lib -lexpat
> +DEFS+=-I$(LOCALBASE)/include
> +LIBS=-L$(LOCALBASE)/lib -lexpat
>  
>  include ../../Makefile.modules
> --- modules/mysql/Makefile.orig	Tue Nov 12 14:32:17 2002
> +++ modules/mysql/Makefile	Wed Jan  8 22:39:46 2003
> @@ -5,11 +5,12 @@
>  auto_gen=
>  NAME=mysql.so
>  # mysql.h locations (freebsd,openbsd  solaris)
> -DEFS +=-I/usr/local/include -I/usr/local/mysql/include \
> +DEFS +=-I$(LOCALBASE)/include -I$(LOCALBASE)/include/mysql \
> +		-I$(LOCALBASE)/mysql/include
>  # libmysqlclient locations on RH/Suse, Solaris /OpenBSD, FreeBSD
>  # (Debian does the right thing and puts it in /usr/lib)
> -LIBS=-L/usr/lib/mysql -L /usr/local/lib -L/usr/local/lib/mysql \
> -		-L/usr/local/mysql/lib/mysql/ \
> +LIBS=-L/usr/lib/mysql -L$(LOCALBASE)/lib -L$(LOCALBASE)/lib/mysql \
> +		-L$(LOCALBASE)/mysql/lib/mysql/ \
>  		-lmysqlclient -lz 
>  
>  include ../../Makefile.modules
> --- modules/radius_acc/Makefile.orig	Thu Aug  8 20:28:55 2002
> +++ modules/radius_acc/Makefile	Wed Jan  8 22:39:46 2003
> @@ -6,7 +6,8 @@
>  
>  auto_gen=
>  NAME=radius_acc.so
> -LIBS=-L/usr/local/lib -lradiusclient
> +DEFS += -I$(LOCALBASE)/include
> +LIBS=-L$(LOCALBASE)/lib -lradiusclient
>  
>  
>  include ../../Makefile.modules
> --- modules/radius_acc/acc.c.orig	Thu Sep 19 15:23:54 2002
> +++ modules/radius_acc/acc.c	Wed Jan  8 22:39:46 2003
> @@ -285,9 +285,9 @@
>      else
>      	tmp = cleanbody(rq->first_line.u.request.uri);
>  
> -  	if (rc_avpair_add(&send, PW_SIP_TRANSLATED_REQ_URI, 
> +  	if (rc_avpair_add(&send, PW_SIP_TRANSLATED_REQUEST_URI, 
>  						tmp, 0) == NULL) {
> -  		DBG("radius_log_reply(): ERROR:PW_SIP_TRANSLATED_REQ_URI \n");
> +  		DBG("radius_log_reply(): ERROR:PW_SIP_TRANSLATED_REQUEST_URI \n");
>  		return(ERROR_RC);
>    	}
>  	
> @@ -585,9 +585,9 @@
>      	tmp = cleanbody(msg->first_line.u.request.uri);
>  
>  	tmp = cleanbody(msg->new_uri);
> -  	if (rc_avpair_add(&send, PW_SIP_TRANSLATED_REQ_URI, 
> +  	if (rc_avpair_add(&send, PW_SIP_TRANSLATED_REQUEST_URI, 
>  							tmp, 0) == NULL) {
> -  		DBG("radius_log_ack(): ERROR:PW_SIP_TRANSLATED_REQ_URI \n");
> +  		DBG("radius_log_ack(): ERROR:PW_SIP_TRANSLATED_REQUEST_URI \n");
>  		return(ERROR_RC);
>    	}
>  
> @@ -901,9 +901,9 @@
>      else
>      	tmp = cleanbody(rq->first_line.u.request.uri);
>  
> -  	if (rc_avpair_add(&send, PW_SIP_TRANSLATED_REQ_URI, 
> +  	if (rc_avpair_add(&send, PW_SIP_TRANSLATED_REQUEST_URI, 
>  						tmp, 0) == NULL) {
> -  		DBG("rad_acc_request(): ERROR:PW_SIP_TRANSLATED_REQ_URI \n");
> +  		DBG("rad_acc_request(): ERROR:PW_SIP_TRANSLATED_REQUEST_URI \n");
>  		return(ERROR_RC);
>    	}
>  	
> --- modules/radius_auth/Makefile.orig	Tue Sep  3 17:08:41 2002
> +++ modules/radius_auth/Makefile	Wed Jan  8 22:39:46 2003
> @@ -7,6 +7,7 @@
>  
>  auto_gen=
>  NAME=radius_auth.so
> -LIBS=-L/usr/local/lib -lradiusclient
> +DEFS += -I$(LOCALBASE)/include
> +LIBS=-L$(LOCALBASE)/lib -lradiusclient
>  
>  include ../../Makefile.modules
> --- modules/radius_auth/digest.c.orig	Thu Sep 19 15:23:54 2002
> +++ modules/radius_auth/digest.c	Wed Jan  8 22:39:46 2003
> @@ -75,11 +75,11 @@
>  						cleanbody(cred->realm), 0) == NULL)
>          return (ERROR_RC);
>   
> -	if (rc_avpair_add(&send, PW_SIP_NONCE, 
> +	if (rc_avpair_add(&send, PW_SIP_USER_NONCE, 
>  						cleanbody(cred->nonce), 0) == NULL)
>          return (ERROR_RC);
>   
> -	if (rc_avpair_add(&send, PW_SIP_NONCE_COUNT, 
> +	if (rc_avpair_add(&send, PW_SIP_USER_NONCE_COUNT, 
>  						cleanbody(cred->nc), 0) == NULL)
>          return (ERROR_RC);
>  
> --- modules/snmp/Makefile.orig	Thu Aug 29 23:13:52 2002
> +++ modules/snmp/Makefile	Wed Jan  8 22:39:46 2003
> @@ -13,5 +13,5 @@
>  # The way it should be:
>  # CFLAGS += `net-snmp-config --cflags`
>  #
> -CFLAGS += -I/usr/local/include
> +CFLAGS += -I$(LOCALBASE)/include
>  LIBS+=`net-snmp-config --agent-libs`
> --- parser/msg_parser.h.orig	Wed Oct 23 18:12:20 2002
> +++ parser/msg_parser.h	Wed Jan  8 22:39:46 2003
> @@ -118,7 +118,9 @@
>  	char* unparsed;   /* here we stopped parsing*/
>  
>  	struct ip_addr src_ip;
> +	unsigned short src_port_no;
>  	struct ip_addr dst_ip;
> +	unsigned short dst_port_no;
>  	
>  	char* orig;       /* original message copy */
>  	char* buf;        /* scratch pad, holds a modfied message,
> --- Makefile.orig	Tue Nov 12 14:31:25 2002
> +++ Makefile	Wed Jan  8 22:48:09 2003
> @@ -158,8 +158,12 @@
>  
>  install-cfg: $(cfg-prefix)/$(cfg-dir)
>  		sed -e "s#/usr/lib/ser/modules/#$(modules-target)#g" \
> -			< etc/ser.cfg > $(cfg-prefix)/$(cfg-dir)ser.cfg
> -		chmod 644 $(cfg-prefix)/$(cfg-dir)ser.cfg
> +			< etc/ser.cfg > $(cfg-prefix)/$(cfg-dir)ser.cfg.default
> +		chmod 644 $(cfg-prefix)/$(cfg-dir)ser.cfg.default
> +		if [ ! -e $(cfg-prefix)/$(cfg-dir)ser.cfg ]; then \
> +			cp -p $(cfg-prefix)/$(cfg-dir)ser.cfg.default \
> +				$(cfg-prefix)/$(cfg-dir)ser.cfg; \
> +		fi
>  #		$(INSTALL-CFG) etc/ser.cfg $(cfg-prefix)/$(cfg-dir)
>  
>  install-bin: $(bin-prefix)/$(bin-dir) utils/gen_ha1/gen_ha1
> --- Makefile.defs.orig	Tue Nov 12 19:21:28 2002
> +++ Makefile.defs	Wed Jan  8 22:39:45 2003
> @@ -16,7 +16,8 @@
>  			-e s/armv4l/arm/)
>  
>   # install location
> -PREFIX = /usr/local
> +PREFIX ?= /usr/local
> +LOCALBASE ?= /usr/local
>  prefix = $(PREFIX)
>  # install path is $(basedir) $(prefix) 
>  # example:
> @@ -40,9 +41,14 @@
>  	doc-dir = share/doc/ser/
>  	man-dir = share/man/
>  else
> +ifeq ($(OS), freebsd)
> +	doc-dir = share/doc/ser/
> +	man-dir = man/
> +else
>  	doc-dir=doc/ser/
>  	man-dir=man/
>  endif
> +endif
>  ut-prefix = bin/
>  # target dirs for various stuff
>  cfg-target = $(prefix)/$(cfg-dir)
> --- ip_addr.h.orig	Mon Nov  4 19:05:32 2002
> +++ ip_addr.h	Wed Jan  8 22:39:46 2003
> @@ -201,6 +201,21 @@
>  	}
>  }
>  
> +static inline unsigned int su2port_no(union sockaddr_union* su)
> +{
> +	switch(su->s.sa_family){
> +	case AF_INET:
> +					return su->sin.sin_port;
> +#ifdef USE_IPV6
> +	case AF_INET6:
> +					return su->sin6.sin6_port;
> +#endif
> +	default:
> +					LOG(L_CRIT,"su2port_no: BUG: unknown address family %d\n",
> +							su->s.sa_family);
> +	}
> +	return 0;
> +}
>  
>  /* ip_addr2su -> the same as init_su*/
>  #define ip_addr2su init_su
> --- msg_translator.c.orig	Mon Oct 21 22:21:50 2002
> +++ msg_translator.c	Wed Jan  8 22:39:46 2003
> @@ -145,9 +145,10 @@
>  	else
>  		foo=&(msg->first_line.u.request.uri);
>  	print_len=snprintf(buf+fix_len, MAX_WARNING_LEN-fix_len,
> -		"pid=%d req_src_ip=%s in_uri=%.*s out_uri=%.*s via_cnt%c=%d\"",
> +		"pid=%d req_src_ip=%s req_src_port=%d in_uri=%.*s out_uri=%.*s via_cnt%c=%d\"",
>  		my_pid(),
>  		ip_addr2a(&msg->src_ip),
> +		msg->src_port_no,
>  		msg->first_line.u.request.uri.len, msg->first_line.u.request.uri.s,
>  		foo->len, foo->s, 
>  		msg->parsed_flag & HDR_EOH ? '=' : '>', /* should be = */
> --- receive.c.orig	Thu Oct  3 23:06:10 2002
> +++ receive.c	Wed Jan  8 22:39:46 2003
> @@ -77,6 +77,7 @@
>  	   useful as most of the work is done with scrath-pad; -jiri  */
>  	buf[len]=0;
>  	su2ip_addr(&msg->src_ip, src_su);
> +	msg->src_port_no=su2port_no(src_su);
>  	msg->dst_ip=bind_address->address; /* won't work if listening on 0.0.0.0 */
>  	msg->id=msg_no;
>  	/* make a copy of the message */




More information about the sr-users mailing list