summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/libipset/session.h1
-rw-r--r--lib/session.c13
-rw-r--r--src/ipset.c3
3 files changed, 17 insertions, 0 deletions
diff --git a/include/libipset/session.h b/include/libipset/session.h
index 02e8b36..a06c79f 100644
--- a/include/libipset/session.h
+++ b/include/libipset/session.h
@@ -24,6 +24,7 @@ struct ipset_handle;
extern struct ipset_data * ipset_session_data(const struct ipset_session *session);
extern struct ipset_handle * ipset_session_handle(const struct ipset_session *session);
extern const struct ipset_type * ipset_saved_type(const struct ipset_session *session);
+extern void ipset_session_lineno(struct ipset_session *session, uint32_t lineno);
enum ipset_err_type {
IPSET_ERROR,
diff --git a/lib/session.c b/lib/session.c
index 311e5df..a193143 100644
--- a/lib/session.c
+++ b/lib/session.c
@@ -98,6 +98,19 @@ ipset_saved_type(const struct ipset_session *session)
return session->saved_type;
}
+/**
+ * ipset_session_lineno - set session lineno
+ * @session: session structure
+ *
+ * Set session lineno to report parser errors correctly.
+ */
+void
+ipset_session_lineno(struct ipset_session *session, uint32_t lineno)
+{
+ assert(session);
+ session->lineno = lineno;
+}
+
/*
* Environment options
*/
diff --git a/src/ipset.c b/src/ipset.c
index 89dbe8f..d4cf7b8 100644
--- a/src/ipset.c
+++ b/src/ipset.c
@@ -439,6 +439,9 @@ parse_commandline(int argc, char *argv[])
"Cannot initialize ipset session, aborting.");
}
+ /* Set session lineno to report parser errors correctly */
+ ipset_session_lineno(session, restore_line);
+
/* Commandline parsing, somewhat similar to that of 'ip' */
/* First: parse core options */