From eugen@grosbein.net  Sat Feb  1 08:24:45 2014
Return-Path: <eugen@grosbein.net>
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1])
	(using TLSv1 with cipher ADH-AES256-SHA (256/256 bits))
	(No client certificate requested)
	by hub.freebsd.org (Postfix) with ESMTPS id 8A7DD891
	for <FreeBSD-gnats-submit@freebsd.org>; Sat,  1 Feb 2014 08:24:45 +0000 (UTC)
Received: from hz.grosbein.net (hz.grosbein.net [78.47.246.247])
	(using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits))
	(No client certificate requested)
	by mx1.freebsd.org (Postfix) with ESMTPS id EA8A619EB
	for <FreeBSD-gnats-submit@freebsd.org>; Sat,  1 Feb 2014 08:24:44 +0000 (UTC)
Received: from eg.sd.rdtc.ru (root@eg.sd.rdtc.ru [62.231.161.221])
	by hz.grosbein.net (8.14.7/8.14.7) with ESMTP id s118OWb3041130
	(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT)
	for <FreeBSD-gnats-submit@freebsd.org>; Sat, 1 Feb 2014 09:24:32 +0100 (CET)
	(envelope-from eugen@grosbein.net)
Received: from grosbein.net (188-123-32-240.rdtc.ru [188.123.32.240] (may be forged))
	by eg.sd.rdtc.ru (8.14.7/8.14.7) with ESMTP id s118O3OQ062503
	(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT)
	for <FreeBSD-gnats-submit@freebsd.org>; Sat, 1 Feb 2014 15:24:28 +0700 (NOVT)
	(envelope-from eugen@grosbein.net)
Received: from grosbein.net (localhost [127.0.0.1])
	by grosbein.net (8.14.7/8.14.7) with ESMTP id s118O3X6003343;
	Sat, 1 Feb 2014 15:24:03 +0700 (NOVT)
	(envelope-from eugen@grosbein.net)
Received: (from eugen@localhost)
	by grosbein.net (8.14.7/8.14.7/Submit) id s118O2xG003342;
	Sat, 1 Feb 2014 15:24:02 +0700 (NOVT)
	(envelope-from eugen)
Message-Id: <201402010824.s118O2xG003342@grosbein.net>
Date: Sat, 1 Feb 2014 15:24:02 +0700 (NOVT)
From: Eugene Grosbein <eugen@grosbein.net>
To: FreeBSD-gnats-submit@freebsd.org
Subject: route(8) fails to return correct exit status in quiet mode
X-Send-Pr-Version: 3.114
X-GNATS-Notify:

>Number:         186333
>Category:       bin
>Synopsis:       route(8) fails to return correct exit status in quiet mode
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    hrs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sat Feb 01 08:30:00 UTC 2014
>Closed-Date:    
>Last-Modified:  Sat Feb 01 08:31:43 UTC 2014
>Originator:     Eugene Grosbein
>Release:        FreeBSD 9.2-STABLE amd64
>Organization:
RDTC JSC
>Environment:
System: FreeBSD grosbein.net 9.2-STABLE FreeBSD 9.2-STABLE #8 r256953M: Sat Nov 23 01:01:28 NOVT 2013 root@grosbein.net:/usr/obj/usr/local/src/sys/DADV amd64

>Description:

	Exit status of route(8) command in case of failure
	depends of presence of '-q' flags: exit status is always 0 with '-q'.

>How-To-Repeat:

# route delete default
delete net default fib 0
# route -q change default 10.58.0.1; echo $?
route: writing to routing socket: No such process
0
# route change default 10.58.0.1; echo $?
route: writing to routing socket: No such process
change net default: gateway 10.58.0.1 fib 0: not in table
1

>Fix:

--- sbin/route/route.c.orig	2013-10-21 20:58:24.000000000 +0700
+++ sbin/route/route.c	2014-02-01 15:05:00.000000000 +0700
@@ -994,8 +994,8 @@ newroute(int argc, char **argv)
 	if (*cmd == 'g' || *cmd == 's')
 		exit(error);
 
-	error = 0;
 	if (!qflag) {
+		error = 0;
 		fibnum = 0;
 		TAILQ_FOREACH(fl, &fibl_head, fl_next) {
 			if (fl->fl_error == 0)
@@ -1066,6 +1066,8 @@ newroute(int argc, char **argv)
 			}
 		}
 	}
+	else
+		error = -error;
 	exit(error);
 }
 


>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-bugs->hrs 
Responsible-Changed-By: hrs 
Responsible-Changed-When: Sat Feb 1 08:31:21 UTC 2014 
Responsible-Changed-Why:  
I'll take this. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=186333 
>Unformatted:
