svn commit: r271160 - projects/ipfw/sbin/ipfw

Steven Hartland killing at multiplay.co.uk
Fri Sep 5 12:49:30 UTC 2014


Why not eliminate error  in do_set3(..) and just:
return (setsockopt(ipfw_socket, IPPROTO_IP, IP_FW3, op3, optlen));

----- Original Message ----- 
From: "Alexander V. Chernikov" <melifaro at FreeBSD.org>
To: <src-committers at freebsd.org>; <svn-src-projects at freebsd.org>
Sent: Friday, September 05, 2014 12:48 PM
Subject: svn commit: r271160 - projects/ipfw/sbin/ipfw


> Author: melifaro
> Date: Fri Sep  5 11:48:32 2014
> New Revision: 271160
> URL: http://svnweb.freebsd.org/changeset/base/271160
> 
> Log:
>  Use per-function errno handling instead of global one.
>  
>  Requested by: luigi
> 
> Modified:
>  projects/ipfw/sbin/ipfw/ipfw2.c
>  projects/ipfw/sbin/ipfw/tables.c
> 
> Modified: projects/ipfw/sbin/ipfw/ipfw2.c
> ==============================================================================
> --- projects/ipfw/sbin/ipfw/ipfw2.c Fri Sep  5 11:25:58 2014 (r271159)
> +++ projects/ipfw/sbin/ipfw/ipfw2.c Fri Sep  5 11:48:32 2014 (r271160)
> @@ -575,7 +575,7 @@ do_cmd(int optname, void *optval, uintpt
> int
> do_set3(int optname, ip_fw3_opheader *op3, uintptr_t optlen)
> {
> - int errno;
> + int error;
> 
>  if (co.test_only)
>  return (0);
> @@ -587,10 +587,9 @@ do_set3(int optname, ip_fw3_opheader *op
> 
>  op3->opcode = optname;
> 
> - if (setsockopt(ipfw_socket, IPPROTO_IP, IP_FW3, op3, optlen) != 0)
> - return (errno);
> + error = setsockopt(ipfw_socket, IPPROTO_IP, IP_FW3, op3, optlen);
> 
> - return (0);
> + return (error);
> }
> 
> /*
> @@ -621,11 +620,6 @@ do_get3(int optname, ip_fw3_opheader *op
>  error = getsockopt(ipfw_socket, IPPROTO_IP, IP_FW3, op3,
>      (socklen_t *)optlen);
> 
> - if (error == -1) {
> - if (errno != 0)
> - error = errno;
> - }
> -
>  return (error);
> }
> 
> @@ -2511,7 +2505,7 @@ ipfw_list(int ac, char *av[], int show_c
>  sfo.flags |= IPFW_CFG_GET_STATES;
>  if (sfo.show_counters != 0)
>  sfo.flags |= IPFW_CFG_GET_COUNTERS;
> - if ((error = ipfw_get_config(&co, &sfo, &cfg, &sz)) != 0)
> + if (ipfw_get_config(&co, &sfo, &cfg, &sz) != 0)
>  err(EX_OSERR, "retrieving config failed");
> 
>  error = ipfw_show_config(&co, &sfo, cfg, sz, ac, av);
> @@ -2654,7 +2648,7 @@ ipfw_get_config(struct cmdline_opts *co,
> {
>  ipfw_cfg_lheader *cfg;
>  size_t sz;
> - int error, i;
> + int i;
> 
> 
>  if (co->test_only != 0) {
> @@ -2676,10 +2670,10 @@ ipfw_get_config(struct cmdline_opts *co,
>  cfg->start_rule = fo->first;
>  cfg->end_rule = fo->last;
> 
> - if ((error = do_get3(IP_FW_XGET, &cfg->opheader, &sz)) != 0) {
> - if (error != ENOMEM) {
> + if (do_get3(IP_FW_XGET, &cfg->opheader, &sz) != 0) {
> + if (errno != ENOMEM) {
>  free(cfg);
> - return (error);
> + return (errno);
>  }
> 
>  /* Buffer size is not enough. Try to increase */
> @@ -4865,23 +4859,23 @@ ipfw_get_tracked_ifaces(ipfw_obj_lheader
> {
>  ipfw_obj_lheader req, *olh;
>  size_t sz;
> - int error;
> 
>  memset(&req, 0, sizeof(req));
>  sz = sizeof(req);
> 
> - error = do_get3(IP_FW_XIFLIST, &req.opheader, &sz);
> - if (error != 0 && error != ENOMEM)
> - return (error);
> + if (do_get3(IP_FW_XIFLIST, &olh->opheader, &sz) != 0) {
> + if (errno != ENOMEM)
> + return (errno);
> + }
> 
>  sz = req.size;
>  if ((olh = calloc(1, sz)) == NULL)
>  return (ENOMEM);
> 
>  olh->size = sz;
> - if ((error = do_get3(IP_FW_XIFLIST, &olh->opheader, &sz)) != 0) {
> + if (do_get3(IP_FW_XIFLIST, &olh->opheader, &sz) != 0) {
>  free(olh);
> - return (error);
> + return (errno);
>  }
> 
>  *polh = olh;
> 
> Modified: projects/ipfw/sbin/ipfw/tables.c
> ==============================================================================
> --- projects/ipfw/sbin/ipfw/tables.c Fri Sep  5 11:25:58 2014 (r271159)
> +++ projects/ipfw/sbin/ipfw/tables.c Fri Sep  5 11:48:32 2014 (r271160)
> @@ -497,7 +497,7 @@ static void
> table_modify(ipfw_obj_header *oh, int ac, char *av[])
> {
>  ipfw_xtable_info xi;
> - int error, tcmd;
> + int tcmd;
>  size_t sz;
>  char tbuf[128];
> 
> @@ -520,7 +520,7 @@ table_modify(ipfw_obj_header *oh, int ac
>  }
>  }
> 
> - if ((error = table_do_modify(oh, &xi)) != 0)
> + if (table_do_modify(oh, &xi) != 0)
>  err(EX_OSERR, "Table modification failed");
> }
> 
> @@ -553,14 +553,13 @@ static void
> table_lock(ipfw_obj_header *oh, int lock)
> {
>  ipfw_xtable_info xi;
> - int error;
> 
>  memset(&xi, 0, sizeof(xi));
> 
>  xi.mflags |= IPFW_TMFLAGS_LOCK;
>  xi.flags |= (lock != 0) ? IPFW_TGFLAGS_LOCKED : 0;
> 
> - if ((error = table_do_modify(oh, &xi)) != 0)
> + if (table_do_modify(oh, &xi) != 0)
>  err(EX_OSERR, "Table %s failed", lock != 0 ? "lock" : "unlock");
> }
> 
> @@ -641,7 +640,6 @@ static int
> table_get_info(ipfw_obj_header *oh, ipfw_xtable_info *i)
> {
>  char tbuf[sizeof(ipfw_obj_header) + sizeof(ipfw_xtable_info)];
> - int error;
>  size_t sz;
> 
>  sz = sizeof(tbuf);
> @@ -649,8 +647,8 @@ table_get_info(ipfw_obj_header *oh, ipfw
>  memcpy(tbuf, oh, sizeof(*oh));
>  oh = (ipfw_obj_header *)tbuf;
> 
> - if ((error = do_get3(IP_FW_TABLE_XINFO, &oh->opheader, &sz)) != 0)
> - return (error);
> + if (do_get3(IP_FW_TABLE_XINFO, &oh->opheader, &sz) != 0)
> + return (errno);
> 
>  if (sz < sizeof(tbuf))
>  return (EINVAL);
> @@ -1058,7 +1056,6 @@ table_do_lookup(ipfw_obj_header *oh, cha
>  ipfw_obj_tentry *tent;
>  uint8_t type;
>  uint32_t vmask;
> - int error;
>  size_t sz;
> 
>  memcpy(xbuf, oh, sizeof(*oh));
> @@ -1073,8 +1070,8 @@ table_do_lookup(ipfw_obj_header *oh, cha
>  oh->ntlv.type = type;
> 
>  sz = sizeof(xbuf);
> - if ((error = do_get3(IP_FW_TABLE_XFIND, &oh->opheader, &sz)) != 0)
> - return (error);
> + if (do_get3(IP_FW_TABLE_XFIND, &oh->opheader, &sz) != 0)
> + return (errno);
> 
>  if (sz < sizeof(xbuf))
>  return (EINVAL);
> @@ -1556,14 +1553,13 @@ tables_foreach(table_cb_t *f, void *arg,
>  return (ENOMEM);
> 
>  olh->size = sz;
> - error = do_get3(IP_FW_TABLES_XLIST, &olh->opheader, &sz);
> - if (error == ENOMEM) {
> - sz = olh->size;
> - free(olh);
> - continue;
> - } else if (error != 0) {
> + if (do_get3(IP_FW_TABLES_XLIST, &olh->opheader, &sz) != 0) {
>  free(olh);
> - return (error);
> + if (errno == ENOMEM) {
> + sz = olh->size;
> + continue;
> + }
> + return (errno);
>  }
> 
>  if (sort != 0)
> @@ -1595,11 +1591,10 @@ table_do_get_list(ipfw_xtable_info *i, i
> {
>  ipfw_obj_header *oh;
>  size_t sz;
> - int error, c;
> + int c;
> 
>  sz = 0;
>  oh = NULL;
> - error = 0;
>  for (c = 0; c < 8; c++) {
>  if (sz < i->size)
>  sz = i->size + 44;
> @@ -1609,19 +1604,17 @@ table_do_get_list(ipfw_xtable_info *i, i
>  continue;
>  table_fill_objheader(oh, i);
>  oh->opheader.version = 1; /* Current version */
> - error = do_get3(IP_FW_TABLE_XLIST, &oh->opheader, &sz);
> -
> - if (error == 0) {
> + if (do_get3(IP_FW_TABLE_XLIST, &oh->opheader, &sz) == 0) {
>  *poh = oh;
>  return (0);
>  }
> 
> - if (error != ENOMEM)
> + if (errno != ENOMEM)
>  break;
>  }
>  free(oh);
> 
> - return (error);
> + return (errno);
> }
> 
> /*
> @@ -1798,23 +1791,22 @@ table_do_get_stdlist(uint16_t opcode, ip
> {
>  ipfw_obj_lheader req, *olh;
>  size_t sz;
> - int error;
> 
>  memset(&req, 0, sizeof(req));
>  sz = sizeof(req);
> 
> - error = do_get3(opcode, &req.opheader, &sz);
> - if (error != 0 && error != ENOMEM)
> - return (error);
> + if (do_get3(opcode, &req.opheader, &sz) != 0)
> + if (errno != ENOMEM)
> + return (errno);
> 
>  sz = req.size;
>  if ((olh = calloc(1, sz)) == NULL)
>  return (ENOMEM);
> 
>  olh->size = sz;
> - if ((error = do_get3(opcode, &olh->opheader, &sz)) != 0) {
> + if (do_get3(opcode, &olh->opheader, &sz) != 0) {
>  free(olh);
> - return (error);
> + return (errno);
>  }
> 
>  *polh = olh;
> 
>


More information about the svn-src-projects mailing list